Según comenta el propio Forsyth la cosa olía a código cuestionable provocando un cuello de botella, así que se puso a trastear con el código del juego hasta dar con lo que, aparentemente, era el problema: 63.000 objetos y mejoras de los mismos que aparecían listadas en un JSON de 10MB.
Poniéndonos paranoicos, o mejor dicho no creyéndose casualidades. Se podía pensar que está hecho adrede para inflar artificialmente las características del hardware necesario. Y en el mejor de los casos lo que demuestra, es que el que hizo esa parte del código, se debería dedicar a recoger fresas.
Me encanta ver que usa x64dbg / IDA, no me siento anticuado
TL;DR - Parsing de JSON escrito en C, extremadamente ineficiente, que usa sscanf() y que internamente hace un strlen() del JSON completo por cada caracter que lee (para un input de 10MB) y para colmo guarda las 60k+ entradas del JSON en un "hashmap" que no es un hashmap sino un array por lo tanto el tiempo de lookup es O(N)
Comentarios
GTA Online, un juego en el que la única forma de ganar es no jugando
#2 Supongo que aprovechas para ir a super...aunque haya cola , te sobran 2 minutos....
6 Minutos de carga!!!! Tamos locos ???
#1 a mí, con mi viejo pc, me llega a tardar hasta 10 min... Es verdad que es aleatorio, a veces carga más rápido.
Poniéndonos paranoicos, o mejor dicho no creyéndose casualidades. Se podía pensar que está hecho adrede para inflar artificialmente las características del hardware necesario. Y en el mejor de los casos lo que demuestra, es que el que hizo esa parte del código, se debería dedicar a recoger fresas.
Saludos.
#11 Si se dedica a recoger fresas no llegarían nunca a la mesa.
Mucho texto para un envío tan pobre. Podrían explicar como ha arreglado el problema de carga.
#5 Lo explica, si leyeses el artículo te enterarías.
#6 no, el artículo solo dice que hay un problema relacionado con un JSON de 10MB, ni dice cual es el problema ni como se ha arreglado.
#5 Me contesto, está el enlace en el propio envío
https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/
Me encanta ver que usa x64dbg / IDA, no me siento anticuado
TL;DR - Parsing de JSON escrito en C, extremadamente ineficiente, que usa sscanf() y que internamente hace un strlen() del JSON completo por cada caracter que lee (para un input de 10MB) y para colmo guarda las 60k+ entradas del JSON en un "hashmap" que no es un hashmap sino un array por lo tanto el tiempo de lookup es O(N)
#5 ahí te lo dejo explicado en inglés
https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/
#5 Menéame, un juego en el que la única forma de ganar es no enviando noticias