ThiagoPompeu, gostaria de deixar um comentário sobre algo que é bem simpes para os experts aqui no Tabnews.
Passei a ter certa consideração por esse tipo composto de dado quando via a importância para armazenar look up tables (LUT). Em determinados processos em que velocidade é preferida em vez da precisão, os vetores armazenam tabelas. O valor é rapidamente recuperado por meio de um índice dispensando cálculos para quantidades que podem ser constantes dentro de uma aplicação. Por exemplo:
-
armazenar as words mágicas utilizadas pela função SHA256 em vez de calcular as raizes quadradas e cúbicas, truncar resultados, multiplicá-los por 2^32, truncar novamente, operações que sempre produzirão as mesmas constantes.
-
armazenar valores "estratégicos" que representem razoavelmente, por exemplo, a função trigonométrica arco-tangente em vez calculá-la enviando uma instrução para o processador (FPU). Sendo mais específico, operações com DSP (Digital Signal Processor) e FPGA (Field Programmable Gate Array) tiram proveito desta estratégia, já que uma porta lógica pode ser facilmente "mapeada" por uma LUT armazenada num vetor ou array como chamou em sua postagem.
Para quem lê sua postagem em tela escura, as imagens com fundo claro podem causar certo desconforto. Nestes casos, tenho preferido ocultá-las com um recurso que aprendi com o rafael. Deixo o código para você copiar e colar, experimentar:
<details>
<summary>Imagem com fundo claro</summary>
<img src="https://media.licdn.com/dms/image/v2/D4D12AQHh7m2h__cNcA/article-inline_image-shrink_1000_1488/article-inline_image-shrink_1000_1488/0/1730849841506?e=1736380800&v=beta&t=Im73H9YPXpk2NTBTw8Kniu2AoSRWPoGBDJm37pidv3Q" height="500">
</details>
Eis o código sugerido funcionando (imagem com redimensionamento da altura para height="500"
.
E aqui com redimensionamento da imagem em largura com width="500"
.
É possível incluir ou omitir as propriedades width
e height
conforme necessário, sendo desejável que mantenha a mesma taxa de aspecto da imagem original para evitar distorções como no exemplo a seguir.
Obrigado, gpoleszuk! Fiquei realmente interessado em aprender mais sobre o uso de Lookup Tables (LUTs) e como elas podem acelerar o desempenho em situações em que a velocidade é mais importante que a precisão. Achei muito interessante o exemplo do SHA-256, onde armazenar constantes evita cálculos repetitivos complexos. Eu nunca tinha pensado nos arrays dessa forma mais avançada, como em aproximações para funções trigonométricas.
Obrigado pela dica de acessibilidade nas imagens! Vou testar o código e aplicar nas próximas postagens também.
Se tiver mais sugestões ou conteúdo sobre LUTs e essas otimizações ficaria feliz em dar uma olhada!