Algoritmos, métodos de solução, comparação de seu desempenho - página 6

 
Alexandr Andreev:

O que há de errado com uma série normal de tangas? Por que as tangas....

Porque não sabemos de antemão quantos negócios a EA fará. Precisamos alocar a memória para a matriz com antecedência, mas não sabemos o quanto.

Portanto, tivemos que encontrar uma solução que fosse rápida e curta e que não ocupasse memória desnecessária.

 
Реter Konow:

Nem por isso.

...

Mais uma vez, você não entende do que estamos falando. O número do comércio é atribuído pelo sistema comercial (MetaTrader ou bolsa). Pelo número do negócio não se entende o número de série do negócio, mas precisamente o bilhete devolvido pela funçãoHistoryDealGetTicket. Portanto, leve isto em consideração e modifique seu exemplo.
 
Alexandr Andreev:

Mais uma vez, imagine que em vez de cordel você usa uma classe para armazenar um conjunto dinâmico de gráficos - e você acha que isso é rápido?

Não conheço o funcionamento interno das funções das cordas, mas as medições de velocidade das funções mostram que são necessários menos de 100 microssegundos para encontrar e devolver um medjic de uma série de milhares de medjics.

Isso me parece muito rápido. É pouco provável que seja mais rápido.

 
Реter Konow:

Porque não sabemos de antemão quantos negócios a EA fará. Precisamos alocar a memória para a matriz com antecedência, mas não sabemos o quanto.

Por isso tivemos que encontrar uma solução que fosse rápida e curta e que não ocupasse memória desnecessária.

Sobre rápido. Medir a velocidade de extração de todos os 24000 mil medjics. Você ficará desagradavelmente surpreso.

 
Реter Konow:

Feito:

Seu exemplo não pode mais ser corrigido :)

O que acontece se você não tiver um número suficiente de filas?

Seu exemplo pode ter 32767 registros (transações), portanto tente comparar o último magik escrito e lido.


 
Vasiliy Sokolov:
Mais uma vez, você não entende do que estamos falando. O sistema comercial (MetaTrader ou troca) atribui um número comercial. Pelo número do negócio não significa o número de série do negócio, mas precisamente o bilhete, devolvido pela funçãoHistoryDealGetTicket. Portanto, levando isto em consideração e modificando seu exemplo.

Não é um problema. Amanhã farei uma segunda versão que funcionará com o bilhete.

Esta variante também é conveniente no comércio.

 
Vasiliy Sokolov:

Na contagem rápida. Medir a velocidade de recuperação de todos os 24.000.000 de medjits. Você ficaria desagradavelmente surpreso.

Bem, a qualquer momento, precisamos apenas de uma medjic, certo?

Extrair um medjack, acessar qualquer informação relacionada com o pedido.

Por que precisamos extrair 24.000 medjiks de uma só vez?

 

Que diabos estou fazendo aqui!? Com quem estou perdendo meu tempo? É melhor eu ir e tomar uma bebida mais forte.

p.s. Oh, sim, você tem mais um erro. Se MathRand na terceira chamada retornar, por exemplo, número 1000 e escrever _3_1000_, que tipo de medjic será encontrado para um acordo com o número ordinal 1000?
 
Yury Kulikov:

Seu exemplo não pode ser corrigido agora :)

O que acontece se você não tiver um número suficiente de filas?

Seu exemplo pode ter 32767 registros (transações), portanto tente comparar o último magik escrito e lido.


Obrigado por indicar o limite do comprimento da linha.

Você pode começar a escrever a segunda linha. Depois a terceira e assim por diante... :)

 
Реter Konow:

Não conheço a implementação interna de funções de cadeia, mas uma medição de tempo de execução da função mostra que leva menos de 100 microssegundos para encontrar e retornar um medjic de uma cadeia total de milhares de medjics.

Eu acho que é muito rápido. Eu não acho que poderia ser mais rápido.


bem, em poucas palavras, uma seqüência de um caracter é umchar com algum código de 0 a 255 e pesa 1 byte... e é alocada apenas memória suficiente para caber 256 valores, 257 não caberão lá, ele mudará de volta para o primeiro.

Em qualquer página, cada caractere é um número de 0 a 255. então pegamos o número 10000000 - ele pesa 4 bytes, convertemo-lo para a string "10000000" então para cada caractere alocamos a memória como para um gráfico individual de 0 a 255... 8 bytes no total. Não há economia de memória em nenhum lugar.