बताया गया है कि bottleneck पैदा करने वाले बेहद साधारण दो functions को ठीक करके GTA Online का loading time 6 मिनट से घटाकर लगभग 1 मिनट 50 सेकंड कर दिया गया।

यह कोई official patch नहीं है, बल्कि लेखक ने dll hooking के जरिए सिर्फ समस्या पैदा करने वाले उन 2 functions को ठीक करके प्रयोग किया। 2013 के अंत में रिलीज़ होने के बाद से अब तक सिर्फ GTA Online से ही 1 ट्रिलियन वॉन से अधिक कमाई कर चुकी Rockstar Games ने इस साधारण समस्या को अब तक ठीक नहीं किया था, यह थोड़ा ज़्यादा ही लगा।

नीचे bottleneck के कारणों का संक्षिप्त सार दिया गया है। मूल लेख में performance measurement, समस्या की पहचान, और समाधान का तरीका (code) तक बहुत रोचक और विस्तार से लिखा है, इसलिए ज़रूर पढ़ें।

  1. Json parsing with sscanf
  • गेम कोड 10MB की item catalog json file को parse करता था, और हर item (करीब 63000) के लिए sscanf function को call किया जाता था,

sscanf function द्वारा call किया जाने वाला strlen function string की लंबाई निकालने के लिए file के एकदम अंत तक एक-एक character पढ़ता था.

  • 10MB string को लगातार 63000 बार पढ़ने में 1 मिनट 30 सेकंड अतिरिक्त लग रहे थे.
  1. Hash key not used
  • ऊपर की प्रक्रिया के तुरंत बाद, parsed item information को array में डालते समय "array की शुरुआत से" sequential search करके insertion position ढूंढी जा रही थी.

  • store किए गए data के duplication की जांच के लिए hash value का उपयोग किया जा रहा था, लेकिन hash map का उपयोग नहीं किया गया, इसलिए insertion position ढूंढने भर में ही ("(63000^2+63000)/2") बार जांच की प्रक्रिया से गुजरना पड़ रहा था, और इसमें 1 मिनट 40 सेकंड अतिरिक्त लग रहे थे.

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.