4560

Ca c'est merdique :/
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4561

npm est générique, pas forcément dédié à node et ses packages, vouloir dégager les scripts c'est en gros comme les dégager aussi des packages debian

les scripts sont désactivables, soit par install, soit complètement

https://docs.npmjs.com/cli/v6/using-npm/scripts

leur exemple est assez parlant :
{ 
  "scripts" : { 
    "preinstall" : "./configure", 
    "install" : "make && make install", 
    "test" : "make test"
  }
}

et pareil les choses se modernisent, vu qu'il y à un système de build complet et dédié, node-gyp

Don't use install. Use a .gyp file for compilation, and prepublish for anything else. You should almost never have to explicitly set a preinstall or install script. If you are doing this, please consider if there is another option. The only valid use of install or preinstall scripts is for compilation which must be done on the target architecture.
et la le mec il le pécho par le bras et il lui dit '

4562

Tant mieux si certaines contre-mesures existent déjà. Mais visiblement, même des grosses boîtes technologiques ne les utilisent pas (encore ?). C'est quand même symptomatique d'un problème général dans l'industrie, je pense.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4563

How I cut GTA Online loading times by 70%meh.GTA Online. Infamous for its slow loading times. Having picked up the game again to finish some of the newer heists I was shocked (/s) to discover that it still loads just as slow as the day it was re


À lire si vous avez le temps, c'est assez navrant.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4564

Ca sent l’utilisation de la STL ou equivalent, sans compréhension de ce qui se passe dessous...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4565

Pas forcément : le problème du strlen appelé en boucle implique qu'ils utilisent des strings C (ou en tout cas une lib JSON qui les utilise) et non des std::string, et la liste chainée de hashes a toutes les chances d'être une structure maison mal foutue smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4566

Si tu préfère, l'abstraction boite noire fournie par ce genre de libraries. "Oui on sais c'est ce truc qui coince, mais on peux rien faire c'est la lib qui est comme ca"
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4567

Oui, là je suis d'accord smile (surtout pour la lib JSON, je ne sais pas de laquelle il s'agit mais ils ont peut-être pris quelque chose de connu sans se soucier des performances)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4568

On fait souvent ça dans les JV. Les moteurs sont super optimisés, pas ce genre de parties smile
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4569

J'aimerais qu'on m'explique le raisonnement qui amène à choisir d'utiliser du JSON pour une appli qui est codée en C++, et surtout comment on se retrouve à avoir une dizaine de Mo de données dans ce format...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4570

C'est plus léger que le XML et facile a supporter dans a peu prêt tous les languages, et c'est pas binaire (donc dépendant de l'architecture, et peux être dur a parser suivant les languages)

C'est lié au outils utilisé plus que le moteur. Et au pire étant du texte du peux le compresser pour que ca prenne moins de place si c'est vraiment un problème.

Utiliser du JSON n'es pas détonant.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4571

Zerosquare (./4569) :
J'aimerais qu'on m'explique le raisonnement qui amène à choisir d'utiliser du JSON pour une appli qui est codée en C++, et surtout comment on se retrouve à avoir une dizaine de Mo de données dans ce format...
A priori c'est pour GTA online, dont ça doit être des données qui viennent de webservices.
avatar

4572

C'est une fausse raison. Un web service peux envoyer n'importe quoi, pas que du texte.

C'est probablement plus lié au outils autour du moteur que le coté "online".
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4573

Il peut mais c'est encore moins naturel, pour un service web de gérer un format binaire que pour du C++ de gérer du texte.
avatar

4574

En-dehors des cas pathologiques comme ceux décrits par l'article, remplacer le JSON par un format binaire pour gagner un facteur 2~4 en taille et réduire le coût de la déserialisation aurait un impact insignifiant sur le jeu au final, donc c'est typiquement le genre de micro-optimisation qui passera en premier à la trappe s'il faut sacrifier quelque chose. Surtout si effectivement ça complexifie le debugging et que ça demande d'implémenter un parseur maison plutôt que de prendre une lib toute faite.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4575

Ben si on parlait du parsing d'un fichier de config de quelques dizaines de Ko par exemple, je serais d'accord que passer de 400 ms à 100 ms (valeurs au pif) n'apporte pas grand-chose en pratique. Mais passer de 6 minutes à moins de 2 minutes de chargement pour un jeu vidéo, moi je n'appellerais pas ça une micro-optimisation : un jeu qui est trop long à lancer, ça n'incite pas à y jouer.

Quant au fait d'avoir besoin d'un parseur maison :
- si le but est d'avoir un équivalent binaire du JSON, c'est relativement facile à coder en C++
- pour ça aussi on trouve des libs toutes faites, genre protobug ou MessagePack

Si ç'avait été codé en JS, on pourrait penser que JSON était simplement le choix de la facilité, mais là ce n'est pas le cas.

EDIT : j'avais pas vu, mais :
    "key": "WP_WCT_TINT_21_t2_v9_n2",
    "price": 45000,
    "statName": "CHAR_KIT_FM_PURCHASE20",
    "storageType": "BITFIELD",
    "bitShift": 7,
    "bitSize": 1,
    "category": ["CATEGORY_WEAPON_MOD"]
c'est du JSON qui décrit... un format binaire grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4576

Ils ne passent pas de 6 à 2 minutes en changeant de format mais en corrigeant une erreur grossière qui n'a pas vraiment de rapport avec le format choisi, elle aurait pu arriver quelque soit le format de sérialisation. Lire un fichier de 10mo en JSON sur une machine moderne prend une poignée de millisecondes, donc stratégiquement ça n'a aucun intérêt de consacrer du temps à optimiser cette partie alors qu'il y a moyen d'avoir bien plus d'impact ailleurs. Surtout si ça complique la vie de tous les développeurs ensuite.

Je sais que tu as une aversion contre les formats texte, aversion très justifiée sur tout un tas d'environnement, mais sur une plateforme qui fait tourner GTA V je pense que ce serait une perte de temps contre-productive.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4577

Zeph (./4576) :
Lire un fichier de 10mo en JSON sur une machine moderne prend une poignée de millisecondes
Ah ben si c'est le cas (je n'en savais rien, je n'utilise pas de JSON), effectivement le choix du format est une question sans importance, mais ça rend encore plus bizarre le fait qu'ils n'aient pas remarqué et corrigé le problème. Une opération normalement instantanée qui prend plusieurs minutes à s'exécuter, ça se voit tout de suite et c'est le signe qu'il y a un gros problème.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4578

(tiens, ça me rappelle une situation similaire : un collègue d'un ex-boulot pestait que "y'a qu'un Atom single-core sur cette carte mère, c'est pourri", auquel j'ai répondu "OK ça vaut pas un i7, mais parser à la volée un flux texte à 9600 bps, ça devrait pas prendre 100% de CPU comme ça... doit y avoir autre chose". En creusant dans son code, j'ai découvert qu'il reparsait tout le flux depuis le début à chaque nouveau caractère reçu, donc forcément... grin)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4579

What the fuck?

Et il reparsait depuis le début a 1200 bps?

Sinon vu le resultat ici:

performance_Corei7-4980HQ%402.80GHz_mac64_clang7.0_1._Parse_Time_(ms).png


Il doivent utiliser CAJUN xD

Pour un projet j'avais choisi cJSON, et vu ce que je vois sur ce benchmark j'avais bien choisis (choisis parce que pur C et API simple sans chichis)

Le benchmark complet:

miloyip/nativejson-benchmarkGitHubC/C++ JSON parser/generator benchmark. Contribute to miloyip/nativejson-benchmark development by creating an account on GitHub.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4580

Godzil (./4579) :
What the fuck?
C'était une bourde dans du code écrit en urgence, mis à part ça c'était un bon dév, juste un peu trop sûr de lui parfois hehe

Sinon intéressant le benchmark, je n'aurais pas cru qu'il y avait des différences aussi massives d'une lib à l'autre !
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4581

Zerosquare (./4577) :
Zeph (./4576) :
Lire un fichier de 10mo en JSON sur une machine moderne prend une poignée de millisecondes
Ah ben si c'est le cas (je n'en savais rien, je n'utilise pas de JSON), effectivement le choix du format est une question sans importance, mais ça rend encore plus bizarre le fait qu'ils n'aient pas remarqué et corrigé le problème. Une opération normalement instantanée qui prend plusieurs minutes à s'exécuter, ça se voit tout de suite et c'est le signe qu'il y a un gros problème.
Le JSON est vraiment efficace à parser (tu t'en rends compte facilement si t'en écris un de parseur). Certaines libs sont mieux faites que d'autres (et ça dépend aussi de ton usage ensuite : tu désérialises vers quoi ? Une map ? Un objet natif ? Ou tu n'as pas d'intermédiaire ?), mais les bonnes libs c'est vraiment un bon compromis entre facilité pour toute l'équipe et performances. Je n'utiliserais peut être pas ça sur la Nintendo DS, mais pour quoi que ce soit de plus puissant faut pas s'embêter.

Ensuite les jeux comme GTA c'est écrit par des équipes immenses. Chacun fait de son mieux sur sa partie, en fonction des impératifs qui sont donnés. Sur certaines parties il n'y a pas d'impératif de performance, mais quelle que soit la partie le temps pour boucler n'est jamais suffisant. Ensuite ce qui laisse souvent plus à désirer c'est l'intégration des parties ensemble. Dans ce cas c'est quand même bizarre qu'ils n'aient pas fait un profiling pour comprendre ce qu'il se passe, ils ont dû juger que c'était normal vu la massivité du jeu, et ils n'avaient pas un passionné pour bosser en bout de chaîne et trouver les erreurs grossières (j'aimais bien prendre ce rôle, comparer les perfs avec d'autres jeux similaires et me dire "y a probablement un truc qui cloche là" et essayer de trouver, mais il faut vraiment être passionné et avoir un esprit "négatif", c'est à dire supposer qu'il y a un problème et donner tout ce que tu as pour le prouver, sinon tu n'y arriveras pas).
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4582

Je ne suis pas d'accord sur tout*, mais la lecture est interessante:

https://floooh.github.io/2019/09/27/modern-c-for-cpp-peeps.html


* Le passage par valeur pour les structure est pour moi un sujet a contention. Il y a des cas ou oui ca n'aura pas ou peu d'impact, mais il y a aussi pas mal ou ca passera pas.

Le enable all warning je suis aussi mitigé, je le fait, mais pas forcement pour les meme raisons, et surtout GCC est pas saable sur les warning actif ou pas suivant les versions, et c'est d'autant plus chiant quand tu mixe avec -Werror pour ne pas laisser passer des warnings.
Perso j'utilise -Wall parce qu'il y a des problems qui ne sont pas du type check qui devrait être des erreurs par défaut.

Oh et je ne partage pas son point de vu sur les pointeurs. Oui utiliser des pointeurs demande a être précautionneux, mais c'est aussi ce qui fait la force du C. Sinon autant retourner au Pascal. Le pascal n'a pas pris come language systems, et ce pas a cause de la syntaxe, c'est un détail la syntaxe, c'est a cause des pointeurs que le pascal n'est pas l'idéal pour du système.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4583

Godzil (./4582) :
Le pascal n'a pas pris come language systems
Y'a quand même eu un contre-exemple notable, et c'est une plateforme que tu affectionnes en plus tongue

Sinon oui c'est intéressant, même si je connaissais déjà la majorité des trucs qu'il présente. Par contre comme j'ai fait très peu de C++ et que je n'y ai plus touché depuis des années, je croyais que tous les ajouts du C99 existaient aussi en C++, ça me surprend de voir que ce n'est pas le cas (surtout après tout ce temps et plein de révisions du C++).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4584

La plateforme en question est majoritairement en assembleur grin
Le pascal est en réalité peu utilisé au niveau OS.
Application oui, OS pas vraiment, mais oui il y en a un peu.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4585

"Mon CPU est mieux que le tien" :
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4586

Vous pensiez avoir tout vu avec javascript?





Et c'est facile a vérifier: F12 sur Fx ou l'equivalent pour avoir la console de debug et taper le code

[-0.4, 3, -4].sort()

ulKA
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4587

quelle est l'explication ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4588

La seule que j'ai, c'est que la fonction "sort" traite tous les éléments comment des chaines de caracteres, je vois pas autre chose
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4589

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Par défaut, le tri s'effectue sur les éléments du tableau convertis en chaînes de caractères et triées selon les valeurs des unités de code UTF-16 des caractères
avatar

4590

"Le typage dynamique c'est intuitif", qu'ils disaient tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo