Besoin d'aide ! Je ne peux pas résoudre le problème, je me heurte à des limitations matérielles. - page 18

 

Script de test et résultats d'exécution.

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)

Lecteur RAM :

2014.08.22 21:22:15.170 sTest_ReadWriteBIN EURUSD,H1 : 100000 secuences dépréciées en 27.6 sec
2014.08.22 21:22:42.805 sTest_ReadWriteBIN EURUSD,H1 : 4158 Mo chargés en 27,6 sec(150,4 Mo/sec)

Toujours pas impressionnant. Il est vrai que les conditions de test ne sont pas vraiment propres en ce moment, avec beaucoup de choses qui tournent sur l'ordinateur.

Je le referai plus tard.

Dossiers :
 
komposter:
Je pense que vous pouvez remplacer la lecture par l'analogue WinAPI et obtenir une augmentation de la vitesse d'au moins 2 à 3 fois pour le disque RAM.
 
komposter:

TheXpert:
Au fait, si vous connaissez le point de départ de chaque séquence, vous pouvez rechercher les dates souhaitées à l'aide d'une recherche binaire, car les transactions sont classées par ordre chronologique.

+1, merci pour l'idée.

Vous pourriez également appliquer la recherche par interpolation, qui serait probablement encore plus rapide dans cette tâche.
 
TheXpert:
Je pense que vous remplacerez la lecture par l'analogue WinAPI et obtiendrez un gain de vitesse d'au moins 2 à 3 fois pour le disque RAM.

Seul FileOpen est censé être lent, alors que la lecture devrait être rapide. Mais je vais vérifier.

anonyme:
Vous pouvez également appliquer la recherche par interpolation, qui sera probablement encore plus rapide dans cette tâche.

Cool, merci.

 
komposter:
...

Toujours pas impressionnant.

...

En C++, c'est fait par fread vers un tampon de 64K-128K, l'analyse avec votre propre analyseur est préférable, car les types sscanf sont très lents.
 
kazakov.v:
En C++, cela est fait par fread vers un tampon de 64K-128K, l'analyse est mieux avec votre propre analyseur, car sscanfs est très lent.

En C++, vous pouvez le faire sans analyseur si :

en poussant l'idée 10 fois - commencer un autre fichier avec les valeurs des positions de départ des séquences dans un autre fichier, alors vous n'avez même pas besoin de stocker le nombre de transactions dans la structure des séquences.

 
marketeer:
Puisque le problème est plutôt académique (il ressemble à une question pour engager un programmeur) et que beaucoup ont exprimé leur intérêt pour celui-ci, pourquoi ne pas le formuler plus strictement en termes de format de description des données d'entrée, et tout le monde pourrait générer 20 Gigs de données de test et soumettre sa solution pratique ?

+100

La tâche n'est pas triviale, mais il n'y a pas encore une seule ligne de code. Andrey, beaucoup de gens ici sont intéressés - formulez la tâche, proposez des données de test. Faisons une programmation sportive.

 
C-4:

+100

La tâche n'est pas triviale, mais il n'y a pas encore une seule ligne de code. Andrey, beaucoup de gens ici sont intéressés - formulez la tâche, proposez des données de test. Faisons un peu de programmation sportive.

La tâche est déjà accomplie.
 
Vinin:
La tâche est déjà accomplie.
Besoin de données de test + pseudocode, avec des principes généraux de traitement des données.
 
Pourquoi passer par les options de la base de données ? Ne serait-il pas préférable de générer des offres à partir de l'historique en fonction des critères ?
Raison: