Precisa de ajuda! Não consigo resolver o problema, estou atingindo limitações de hardware - página 18

 

Roteiro de teste e resultados de execução.

HDD:

2014.08.22 21:16:43.584 sTest_ReadWriteBIN EURUSD,M1: 100000 secuences writed in 39.8 sec
2014.08.22 21:17:24.174 sTest_ReadWriteBIN EURUSD,M1: 4156 Mb loaded in 40.0 sec (103.9 MB/sec)

RAM drive:

2014.08.22 21:22:15.170 sTest_ReadWriteBIN EURUSD,H1: 100000 seg. anotação em 27.6 seg
2014.08.22 21:22:42.805 sTest_ReadWriteBIN EURUSD,H1: 4158 Mb carregado em 27.6 seg(150.4 MB/seg)

Ainda não é impressionante. É verdade, as condições de teste não estão exatamente limpas no momento, com muitas coisas rodando no computador.

Farei isso novamente mais tarde.

Arquivos anexados:
 
komposter:
Suspeito que você pode trocar a leitura pelo analógico WinAPI e obter um aumento de velocidade de pelo menos 2-3 vezes para o disco RAM
 
komposter:

TheXpert:
A propósito, se você conhece o ponto de partida de cada seqüência, você pode procurar as datas desejadas com uma busca binária, já que as negociações são ordenadas por tempo.

+1, obrigado pela idéia.

Você também poderia aplicar a pesquisa de interpolação, que provavelmente funcionaria ainda mais rápido nesta tarefa.
 
TheXpert:
Suspeito que você substituirá a leitura pelo analógico WinAPI e obterá ganho de velocidade de pelo menos 2-3 vezes pelo disco RAM

Somente o FileOpen deve ser lento, enquanto a leitura deve ser rápida. Mas eu vou verificar.

anônimo:
Você também pode aplicar a busca por interpolação, que provavelmente será ainda mais rápida nesta tarefa.

Legal, obrigado.

 
komposter:
...

Ainda não é impressionante.

...

Em C++ é feito por fread a 64K-128K buffer, analisando com seu próprio parser é melhor, porque os sscanf-tipos são muito lentos.
 
kazakov.v:
Em C++ isto é feito por fread a 64K-128K buffer, a análise é melhor com seu próprio parser, porque os sscanfs são muito lentos.

Em C++ você pode fazer isso sem um analisador se:

empurrando a idéia 10 vezes - iniciar outro arquivo com valores de posições iniciais de seqüências em outro arquivo, então você não precisa nem mesmo armazenar o número de transações na estrutura de seqüências.

 
marketeer:
Como o problema é bastante acadêmico (parece uma pergunta para contratar um programador) e muitos manifestaram interesse nele, por que não formulá-lo mais estritamente em termos de formato de descrição dos dados de entrada, e todos poderiam gerar 20 Gigs de dados de teste e apresentar sua solução prática?

+100

A tarefa é não trivial, mas ainda não há uma única linha de código. Andrey, muitas pessoas aqui estão interessadas - formular a tarefa, oferecer dados de teste. Vamos ter uma programação esportiva.

 
C-4:

+100

A tarefa é não trivial, mas ainda não há uma única linha de código. Andrey, muitas pessoas aqui estão interessadas - formular a tarefa, oferecer dados de teste. Vamos fazer alguma programação esportiva.

A tarefa já foi definida.
 
Vinin:
A tarefa já foi definida.
Necessita de dados de teste + pseudocódigo, com princípios gerais de tratamento de dados.
 
Por que analisar as opções do banco de dados? Não seria melhor gerar negócios a partir da história de acordo com os critérios?