Bonjour tout le monde,

Puisque l'on en est à parler compression, voici l'extrait d'un mail que j'ai 
envoyé à Félix au début septembre. Depuis mes développement (le soir) ont 
dérivés vers un serveur avec des conteneurs Dockers et la réécriture de quelque 
chose de plus intelligent que fail2ban (on s'amuse comme on peut).

Donc, avec une vitesse d'exécution et un taux de compression bien supérieure à 
tout ce qui existe, ça devrait en titiller plus d'un :-) Comme je l'ai dit, je 
vais mettre tout ça en GPL V3, mais j'ai besoin d'un peu de temps pour 
plusieurs raisons. Si quelqu'un a une idée pour héberger le code quelque part 
en évitant github, je suis preneur car le développement de mon serveur prend du 
temps, vu que je veux y associer le développement d'outils de gestion de 
cluster non-stop et d'autres outils de sécurité.

dc

/*************** Extrait *************/

Je me suis finalement remis à mon fameux problème de compression de valeurs
numériques, et j'ai enfin terminé l'algorithme complet. Je l'ai fait en
Python car j'ai fait plein d'essais (je n'ai d'ailleurs pas fini) et Python
me laisse beaucoup de liberté pour faire joujou et faire une quantité
d'essais... Bref, mon code n'est absolument pas optimisé du tout, c'est même
l'horreur car j'avais besoin (et j'ai toujours pour mes nombreux et futures 
essais)
d'imprimer plein de valeurs intermédiaires. J'ai d'ailleurs passablement
séché sur le compactage des bits car je n'ai pas arrêté de faire des
conneries...

Bref, je suis super content du résultat final ! J'ai comparé mon taux de
compression et les temps d'exécutions avec les commandes :

- compress
- gzip
- bzip2
- xz

J'obtiens le tableau suivant :

Commande        Temps           Taille          ratio nouveau/original

compress        :  1.193        18'659'929      22.5%
gzip            :  2.00         13'127'832      15.8%
bzip2           :  5.340        10'084'519      12.1%
xz              : 36.243         7'288'500       8.8%

Et maintenant mon code que j'appelle 'nuc' pour "NUmerical Compress"

nuc             : 12.702         4'726'559       5.7%

Soit un taux de compression de 17.5 (cad compressé à 94.3%)

Taux de compression impressionnant... Le temps n'est pas si mal, considérant
que c'est du très bête Python interprété et vraiment bourrin. Je vais
maintenant faire une version en utilisant NumPy et je devrai peut-être
arriver un peu de dessous des temps de bzip2 (toujours pour de
l'interprété). Ensuite, je vais passer au codage en C (depuis Python
toujours) et je devrais battre même compress les doigts dans le nez (du
moins je pense).

Qui plus est, mon mode de compactage est massivement plus rapide que les
autres quand il s'agit de décompresser. Surtout, je suis dans une
configuration de donnée pas forcément très favorable et je devrais arriver
aux alentours de 2'500'000 bytes avec une autre config, me donnant un taux
de compression 97-98% par rapport au fichier original, tout en étant encore
plus rapide. Je ferai des essais ce week-end

Voici les 10 premières lignes du fichier d’origine qui fait un peu plus de
83 MB (+2'300'000 lignes):

1590962409.747,1.069640,1.069710,0
1590962409.849,1.069640,1.069700,0
1590962410.249,1.069640,1.069710,0
1590962412.697,1.069660,1.069710,0
1590962412.798,1.069660,1.069720,0
1590962414.58,1.069650,1.069720,0
1590962414.926,1.069650,1.069730,0
1590962415.15,1.069650,1.069720,0
1590962415.432,1.069650,1.069730,0
1590962416.739,1.069650,1.069720,0

_______________________________________________
gull mailing list
[email protected]
https://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à