(Note : je suis vraiment déçu qu’après vente 400 millions des copies de Windows 7 Microsoft ne supporte plus Windows XP mais a commencé à rétrograder sa fonctionnalité en morceaux, ce qui en fait n’est plus approprié pour ce projet. Car faire le projet sous Windows 7 est encore plus difficile que de le faire sous Linux et Linux offrent de nombreux avantages ultimes plus que Windows je suis passer à Linux et comme j’apprends actualisera ce projet en conséquence. Aussi j’envisage ce qui en fait une collaboration opensource sous Linux alors laissez-moi savoir si vous aimeriez collaborer.)
Étant donné que les valeurs dans le tableau a dépassé les limites d’une variable de type entier long de Microsoft et j’ai dû utiliser les variables de simple ou double précision (dans la recherche de doublons en comparant chaque valeur dans le tableau avec un indice allant de minimum à la valeur de tableau maximale) la quantité de mémoire disponible et le temps a été souvent dépassée.
Une taille de tableau de 265 éléments qui contient les valeurs entières qui augmentent exponentiellement en valeur chaque cycle potentiellement sans limite dans le nombre de cycles ou les valeurs du tableau le temps une mémoire requise rapidement dépassé les capacités de mon ordinateur personnel unique.
Un tableau et son ensemble de valeurs et un exemple d’indice de comparaison :
1 2622695870048
- -
- -
5 6645178834471
6 63491409181716
7 83861832294247
8 2622695870048
9 45029704436816
10 18117222372627
11 6659485477833
12 50600552165484
13 37292816675177
14 36784339702878
15 40751538724887
16 41576195825074
17 37319353740877
18 15405643023342
19 77102983094426
- -
- -
265 41576195825074
.. .avec un indice de comparaison de 0 à 28239790275938 pour ce tableau particulier.
J’ai considéré comme réécrire le programme dans l’ASP, ouvrant une Amazon ou Google ou Microsoft cloud compte mais décidez de bricoler avec un petit cluster Beowulf tout d’abord, après avoir lu plusieurs articles à leur sujet.
Puisqu’il était possible de dupliquer le tableau et copiez-le sur un autre ordinateur et il était également possible de diviser l’index dans la moitié et comte de doublons dans la plage inférieure des valeurs sur un seul ordinateur et le haut de gamme sur un autre ordinateur
28239790275938 / 2 = 14119895137969
gamme inférieure transformés sur un seul ordinateur 0-14119895137969 / 1
haut de gamme traitée sur un autre ordinateur : 14119895137969 à 28239790275938
puis ajout d’ordinateurs de plus en plus pourrait potentiellement constituer une solution aux limites d’un seul ordinateur.
Si vous avez un problème qui peut être divisé de manière similaire et exécuter la moitié sur un ordinateur et l’autre moitié sur l’autre vous pouvez construire un super-ordinateur simplement diviser le problème et en ajoutant plus d’ordinateurs.
Bien sûr, vous pourriez vouloir utiliser une liaison Ethernet pour transférer des données au lieu d’utiliser des disquettes, et vous voudrez peut-être éviter les ordinateurs que courir à une vitesse inférieure à 1 GHz, mais l’idée ne change pas.
Parce que mon application ne demande pas trop de mémoire du serveur ou les temps de traitement à compter les doublons je peux généralement exécuter plusieurs instance du programme sur chaque ordinateur en arrière-plan sans trop ralentir ou la perte de mémoire pour d’autres programmes. Avec des serveurs dédiés, je peux exécuter généralement beaucoup plus de cas du programme.
Le système j’ai place et en cours d’exécution peut maintenant gérer une taille de tableau de 265 valeurs nécessitant un indice indivis de 0 à 1,280,000,000,000 (1,28 billions) pour un seul ordinateur ou qui peut être divisé en 38 segments pour réduire la taille de valeur de l’index à 33,684,210 (33 millions), 38 cas peuvent courir sur 7 ordinateurs sans problèmes.
Bien qu’il pourrait prendre une nuit ou plus à remplir cette tâche et être lent selon les normes industrielles il montre qu’avec assez ordinateurs les possibilités est pratiquement illimitées...