Articles of otimização

Qual é a melhor maneira de implementar `next` e` previous` em um tipo enum?

Suponha que eu tenha um enum: enum E { A, B, C; } Como mostrado nesta resposta pelo lucasmo , os valores enum são armazenados em um array estático na ordem em que são inicializados, e você pode recuperar posteriormente (um clone) desse array com E.values() . Agora, suponha que eu queira implementar E#getNext e […]

O que é copiar elision e como ele otimiza o idioma de cópia e troca?

Eu estava lendo Copy e Swap . Eu tentei ler alguns links no Copy Elision, mas não consegui descobrir corretamente o que isso significava. Alguém pode explicar o que é essa otimização e, especialmente, o que significa o seguinte texto Isso não é apenas uma questão de conveniência, mas sim uma otimização. Se o parâmetro […]

Acelerar as operações bitstring / bit no Python?

Eu escrevi um gerador de números primos usando o Sieve of Eratosthenes e o Python 3.1. O código é executado corretamente e graciosamente em 0,32 segundos no ideone.com para gerar números primos até 1.000.000. # from bitstring import BitString def prime_numbers(limit=1000000): ”’Prime number generator. Yields the series 2, 3, 5, 7, 11, 13, 17, 19, […]

Como determinar rapidamente se um método é substituído em Java

Existe uma possível otimização que eu poderia aplicar a um dos meus methods, se eu puder determinar que outro método na mesma class não seja substituído. É apenas uma pequena otimização, então a reflection está fora de questão. Devo apenas fazer um método protegido que retorna ou não o método em questão é substituído, de […]

C / C ++: Otimização de pointers para constantes de string

Dê uma olhada neste código: #include using namespace std; int main() { const char* str0 = “Watchmen”; const char* str1 = “Watchmen”; char* str2 = “Watchmen”; char* str3 = “Watchmen”; cerr << static_cast( const_cast( str0 ) ) << endl; cerr << static_cast( const_cast( str1 ) ) << endl; cerr << static_cast( str2 ) << endl; […]

E / S de arquivo com streams – melhor tamanho do buffer de memory

Estou escrevendo uma pequena biblioteca de E / S para ajudar com um projeto maior (passatempo). Uma parte dessa biblioteca executa várias funções em um arquivo, que é lido / gravado por meio do object FileStream . Em cada passagem StreamReader.Read(…) , Disparo um evento que será usado no aplicativo principal para exibir informações de […]

O operador de desigualdade é mais rápido que o operador de igualdade?

Eu sei que isso é uma micro-otimização, então eu pergunto por pura curiosidade. Logicamente, um microprocessador não precisa comparar todos os bits de ambos os operandos de um operador de igualdade para determinar um resultado “FALSE”. Observe que isso é relacionado à programação porque afeta a velocidade de execução de um programa.

O que está faltando / sub-ótimo nesta implementação do memcpy?

Eu me interessei em escrever um memcpy() como um exercício educacional. Eu não vou escrever um tratado inteiro sobre o que eu fiz e não pensei, mas aqui está a implementação de um cara : __forceinline //因为通常Size已知,内联后编译器可以优化掉大部分无用代码void* myMemcpy(char* Dst, const char* Src, size_t Size) { void* start = Dst; for ( ; Size >= sizeof(__m256i); […]

Por que usar StringBuffer em Java em vez do operador de concatenação de string

Alguém me disse que é mais eficiente usar StringBuffer para concatenar strings em Java do que usar o operador + para String s. O que acontece sob o capô quando você faz isso? O que StringBuffer faz diferente?

Por que a API Java usa int em vez de curto ou byte?

Por que a API Java usa int , quando short ou even byte seria suficiente? Exemplo: o campo DAY_OF_WEEK na class Calendar usa int . Se a diferença é mínima, então por que esses tipos de dados ( short , int ) existem?