Otimizar a lógica. Por exemplo, trabalhar com arrays e loops. Tente embalar os valores dos critérios em uma matriz. E fazer verificações em loop. Talvez não haja necessidade em 74 mil casos então...
É claro que, em teoria, você pode gerar cada fio por um longo hash, e passar apenas esses hashes, e depois usá-lo para gerar tudo - mas não tenho certeza de que isso será rápido e a tarefa não é simples...
1. você verá os lugares mais "lentos" do código. Embora... é outra questão se ela afeta a compilação...
2. Como você quiser: você pode usar o case. Você foi aconselhado a dividi-lo em pequenas funções. Separar e testar. Sim, é claro, o código vai ficar maior. Mas o que fazer.
E aqui eu reescrevi o código em funções - no apêndice.
Notei imediatamente que o código anterior levou 14428 kb após a compilação e o novo levou 9447 kb - já estou surpreso com a diferença de 5 Mbytes - de onde!
Mais adiante, pela velocidade de compilação, o primeiro
0 error(s), 0 warning(s), 2109302 msec elapsed
nova versão
0 error(s), 0 warning(s), 386131 msec elapsed
A nova versão é 5,46 vezes mais rápida de compilar.
E aqui está a versão anterior em termos de velocidade:
2019.10.1514:35:47.593 Core 1 pass 0 returned result 1001000.000000in0:00:29.5552019.10.1514:35:47.595 Core 3 pass 4 returned result 1001000.000000in0:00:29.4902019.10.1514:35:47.605 Core 2 pass 2 returned result 1001000.000000in0:00:29.5402019.10.1514:35:47.641 Core 4 pass 6 returned result 1001000.000000in0:00:29.5412019.10.1514:36:15.511 Core 2 pass 3 returned result 1001000.000000in0:00:27.9072019.10.1514:36:15.523 Core 1 pass 1 returned result 1001000.000000in0:00:27.9322019.10.1514:36:15.535 Core 3 pass 5 returned result 1001000.000000in0:00:27.9422019.10.1514:36:15.537 Core 4 pass 7 returned result 1001000.000000in0:00:27.8972019.10.1514:36:15.537 Tester optimization finished, total passes 82019.10.1514:36:15.547 Statistics optimization done in0 minutes 58 seconds
2019.10.1514:36:15.547 Statistics shortest pass 0:00:27.897, longest pass 0:00:29.555, average pass 0:00:28.7252019.10.1514:36:15.547 Statistics 8000 frames (3.14 Mb total, 412 bytes per frame) received
2019.10.1514:36:15.547 Statistics local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
a nova versão.
2019.10.1514:33:51.458 Core 3 pass 6 returned result 1001000.000000in0:01:01.8402019.10.1514:33:51.485 Core 2 pass 4 returned result 1001000.000000in0:01:01.8672019.10.1514:33:51.521 Core 1 pass 2 returned result 1001000.000000in0:01:01.9032019.10.1514:33:51.524 Core 4 pass 0 returned result 1001000.000000in0:01:01.9062019.10.1514:34:18.802 Core 3 pass 7 returned result 1001000.000000in0:00:27.3462019.10.1514:34:18.837 Core 2 pass 5 returned result 1001000.000000in0:00:27.3542019.10.1514:34:18.892 Core 4 pass 1 returned result 1001000.000000in0:00:27.3702019.10.1514:34:18.922 Core 1 pass 3 returned result 1001000.000000in0:00:27.4032019.10.1514:34:18.922 Tester optimization finished, total passes 82019.10.1514:34:18.932 Statistics optimization done in1 minutes 29 seconds
2019.10.1514:34:18.932 Statistics shortest pass 0:00:27.346, longest pass 0:01:01.906, average pass 0:00:44.6232019.10.1514:34:18.932 Statistics 8000 frames (3.14 Mb total, 412 bytes per frame) received
2019.10.1514:34:18.932 Statistics local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
E aqui vemos que a primeira passagem de agentes (4 agentes) é muito lenta - eu tentei muitas vezes - o resultado é estável, mas no tronco
2019.10.1514:38:07.002 Tester OnTesterInit works too long...
O que isso tem a ver agora, talvez@Renat Fatkhullin ou@Slava possa me dizer por que ocorre tal efeito?
Infelizmente, verificou-se que o compilador não consegue lidar com códigos grandes - recebeu o erro "EX5 write error" - nenhum outro erro. Seria bom escrever sobre as limitações no manual do usuário!
Fez uma versão pública do EA, agora estou verificando - compilará ou não - o processo não é rápido, mas agora você pode ver que 46% do código é compilado e já 36 GB de RAM são comidos...
Aleksey Vyazmikin: Fiz uma versão pública do EA, agora estou verificando - compilará ou não - o processo não é rápido, mas agora posso ver que 46% do código está compilado e 36 gigabytes de RAM já foram comidos...
Por favor, me forneça o código para investigar. Vou verificar por que ele compila tão lentamente e consome tanta memória.
Otimizar a lógica. Por exemplo, trabalhar com arrays e loops. Tente embalar os valores dos critérios em uma matriz. E fazer verificações em loop. Talvez não haja necessidade em 74 mil casos então...
É claro que, em teoria, você pode gerar cada fio por um longo hash, e passar apenas esses hashes, e depois usá-lo para gerar tudo - mas não tenho certeza de que isso será rápido e a tarefa não é simples...
1. você verá os lugares mais "lentos" do código. Embora... é outra questão se ela afeta a compilação...
2. Como você quiser: você pode usar o case. Você foi aconselhado a dividi-lo em pequenas funções. Separar e testar. Sim, é claro, o código vai ficar maior. Mas o que fazer.
E aqui eu reescrevi o código em funções - no apêndice.
Notei imediatamente que o código anterior levou 14428 kb após a compilação e o novo levou 9447 kb - já estou surpreso com a diferença de 5 Mbytes - de onde!
Mais adiante, pela velocidade de compilação, o primeiro
nova versão
A nova versão é 5,46 vezes mais rápida de compilar.
E aqui está a versão anterior em termos de velocidade:
a nova versão.
E aqui vemos que a primeira passagem de agentes (4 agentes) é muito lenta - eu tentei muitas vezes - o resultado é estável, mas no tronco
O que isso tem a ver agora, talvez@Renat Fatkhullin ou@Slava possa me dizer por que ocorre tal efeito?
O arquivo está zipado. Leia o zip, descompacte dentro. Será mais rápido do que transferir um 500 MB EA (também é transferido para cada agente).
Não se descomprime novamente a cada novo passe?
E a leitura do arquivo seria mais rápida do que uma transferência única de....
Não será então desembalado novamente cada vez que um novo passe é feito?
Sim, e a leitura de um arquivo seria mais rápida do que uma simples passagem....
Sim, pode ser mais lento com a otimização... Mas eu verificaria, tudo está preparado para isso.
Sim, pode ser mais lento durante a otimização... Mas eu verificaria, tudo está pronto para isso.
O que exatamente está pronto - eu não entendo.
O que exatamente está pronto - eu não entendo.
Trabalhando com arquivos zip.
Trabalhando com arquivos zip.
Sim, eu o vi, mas não o experimentei na prática.
É mais um problema para mim na preparação dos dados, ou seja, na tradução do código em uma tabela - terei que processar os dados brutos novamente...
Fiz uma versão pública do EA, agora estou verificando - compilará ou não - o processo não é rápido, mas agora posso ver que 46% do código está compilado e 36 gigabytes de RAM já foram comidos...
Por favor, me forneça o código para investigar.
Vou verificar por que ele compila tão lentamente e consome tanta memória.