Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Dê-me o código completo do seu teste
aqui está, mas não vejo nenhum ponto em discutir rand() novamente, alternativamente substitua-o por alguma variável inc++
Sim... Eu tenho um erro no meu código, quero emitir tempo em segundos, mas recebo 10 vezes mais, dividi-o corretamente por 1 000 000, quem pode me dizer qual é a razão?
aqui está, mas não vejo a utilidade de discutir novamente o rand(), alternativamente, substituí-lo por alguma variável inc++
Sim... Algum tipo de erro em meu código, eu quero emitir o tempo em segundos, mas recebo 10 vezes mais, dividi corretamente por 1 000 000, quem pode me dizer qual é a razão?
BOMB.
aqui está o seu código que prova que é o contrário.
BOMB
Aqui está o seu código que prova o contrário.
Acabei de trocar os cheques.
Eu só troquei os cheques
2020.11.02 21:01:38.590 22222 (USDCHF,H1) cnt: loops = 1000 segundos=821.7159
2020.11.02 21:01:52.353 22222 (USDCHF,H1) ArraySize: loops = 1000 segundos=807.9415
Que teste? ))
Você mesmo mostrou as duas variações da condição do ciclo.
Igor também deu o código acima.
Basta medir o desempenho do loop com tamanho variável e com o ArraySize() na condição de loop.
Prove que estou errado)
porque em meu teste eles são os mesmos
Acabei de trocar os cheques.
Sim, você tem que fazer isso.
Desta vez, eu era preguiçoso demais.
Envolveu os testes em um laço externo, conseguiu assim:
2020.11.02 22:06:43.557 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=117.4626
2020.11.02 22:06:58.328 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=102.7337
2020.11.02 22:07:13.075 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=87.9782
2020.11.02 22:07:27.850 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=73.2461
2020.11.02 22:07:42.598 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=58.4859
2020.11.02 22:07:57.380 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=43.7522
2020.11.02 22:08:12.891 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=28.9861
2020.11.02 22:08:28.874 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=13.4910
Sim, isso tem que ser feito.
Desta vez, eu era preguiçoso demais.
Envolveu os testes em um laço externo, conseguiu isto
2020.11.02 22:06:43.557 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=117.4626
2020.11.02 22:06:58.328 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=102.7337
2020.11.02 22:07:13.075 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=87.9782
2020.11.02 22:07:27.850 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=73.2461
2020.11.02 22:07:42.598 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=58.4859
2020.11.02 22:07:57.380 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=43.7522
2020.11.02 22:08:12.891 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 segundos=28.9861
2020.11.02 22:08:28.874 SpeedTst (EURUSD,H1) cnt: loops = 1000 segundos=13.4910
Agora troque-os no circuito e fique maravilhado
Agora troque-os no circuito e você ficará surpreso
Não me surpreenderei. Sei que o compilador pode otimizar o código em tempo real.
mas, imho, em loops aninhados, você ainda não deve chamar o ArraySize() desnecessariamente.
É claro que às vezes pode ser inconveniente, então eu faço o loop através de uma variável temporária - sua versão № 2
imho, é confiável e você entende o que vai acontecer
Bem, eu não posso dizer nada contra o IMHO.
Em replays muito grandes, minhas vitórias se tornaram aleatórias para o primeiro e segundo métodos. Muito provavelmente se tornou dependente do cache atual da CPU e da carga geral.
Minha pergunta não era sobre o loop - era sobre como a função se desdobrava. Assim como um exemplo foi o ArraySize
O resultado;
for (int i=0; i<ArraySIze(mas); i++) == for (int i=0; i<size; i++)
Mas se adicionarmos a inicialização da variável de tamanho à segunda parte, então o primeiro método toma a dianteira para o tempo de inicialização desta variável e a equaciona com o valor.
Se você mudar o tamanho das matrizes no corpo do laço, a otimização on-the-fly não funciona
portanto, mude o código:
então o primeiro método tem precedência, para o momento de inicializar esta variável e equacioná-la com um valor, ela só é perceptível em altas repetições
não funciona
a otimização do tempo de execução estará na liderança
você não pode testar mashidas tão simples sem o profiler, em geral, você pode escrever em loop, ou você pode testar no testador, a velocidade é importante para isso