o-0-0-0 77 #280604 Posted July 4, 2015 из перекрываемого файла - а это как ? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #280605 Posted July 4, 2015 (edited) из перекрываемого файла - а это как ?файлы в res_mods/<wot_ver>/ перекрывают файлы из res. Так работает загрузчик. Edited July 4, 2015 by ShadowHunterRUS 2 Quote Share this post Link to post Short link Share on other sites
fecell 125 #280660 Posted July 5, 2015 Там про шифрование ни слова нет гыгыгыг для общего развития))) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #281244 Posted July 9, 2015 https://bitbucket.org/ShadowHunterRUS/wot-tools-python/src/ @StranikS_Scan, у тебя есть идеи по оптимизации? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #281266 Posted July 9, 2015 (edited) https://bitbucket.org/ShadowHunterRUS/wot-tools-python/src/ @StranikS_Scan, у тебя есть идеи по оптимизации? Думаю стоит подключить профайлер и поработать над сокращением времени выполнения. def ReadChar(self): self.visual_data = self.visual_data[1:] return str(self.visual_data[0]) так вроде быстрее будет def ReadChar(self): self.visual_data = self.visual_data[1:] return '%s' % self.visual_data[0] def ReadSByte(self): sbyte = self.visual_data[:1] self.visual_data = self.visual_data[1:] return sbyte не думаю что постепенно кромсать массив данных self.visual_data - это лучше чем юзать i-тую позицию и инкрементировать её на каждом шаге. Явно будет быстрее: def ReadSByte(self): sbyte = self.visual_data[self.position:self.position+1] self.position += 1 return sbyte Мой вариант: def readStringTillZero(self): index = self.visual_data.find('\x00', self.position) if index == -1: work = self.visual_data[self.position:] self.position += len(work) else: work = self.visual_data[self.position:index] self.position += index+1 return work Код на глаз набросал, мог накосячить с позициями в строке. def readFloats(self, lengthInBytes): n = lengthInBytes / 4 sb = '' for i in range(n): if (i != 0): sb += ' ' rFloat = '{0:0.6f}'.format(self.readLittleEndianFloat()) sb += rFloat return sb а можно и вот так: def readFloats(self, lengthInBytes): return ' '.join(['{0:0.6f}'.format(self.readLittleEndianFloat()) for i in xrange(lengthInBytes / 4)]) def readDictionary(self): dictionary = [] text = self.readStringTillZero(); while (len(text) != 0): dictionary.append(text) text = self.readStringTillZero() self.visual_data = self.visual_data[1:] return dictionary думаю лучше так: def readDictionary(self): dictionary = [] text = self.readStringTillZero(); while text: ... def readNumber(self, lengthInBytes): Number = '' if lengthInBytes == 1: Number = str(self.ReadSByte()) elif lengthInBytes == 2: Number = str(self.readLittleEndianShort()) elif lengthInBytes == 4: Number = str(self.readLittleEndianInt()) elif lengthInBytes == 8: Number = str(self.readLittleEndianInt64()) else: Number = '0' return Number Быстрее будет наверно: def readNumber(self, lengthInBytes): Number = '' if lengthInBytes == 1: Number = '%s' % self.ReadSByte() elif lengthInBytes == 2: Number = '%s' % self.readLittleEndianShort() elif lengthInBytes == 4: Number = '%s' % self.readLittleEndianInt() elif lengthInBytes == 8: Number = '%s' % self.readLittleEndianInt64() else: Number = '0' return Number По своему опыту для быстродействия помогает превращение в константы: def readDictionary(self): dictionary = [] ... return tuple(dictionary) def readElementDescriptors(self, number): elements = [] ... return tuple(elements) Edited July 9, 2015 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #281267 Posted July 9, 2015 (edited) @StranikS_Scan, спасибо. Буду знать. Еще не понятно как это оптимизировать под Python 3.X P.S. вариант с tuple замедлил все. Оо Edited July 9, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #281269 Posted July 9, 2015 @StranikS_Scan, спасибо. Буду знать. Еще не понятно как это оптимизировать под Python 3.X Ни как, под Пи3 надо с нуля писать, я его особенностей совсем не знаю. А там усе поменялось, даже то что было медленно в Пи2 может оказаться круче и быстрее в Пи3. P.S. вариант с tuple замедлил все. Оо Возможно время конвертирования в tuple оказалось больше суммарного времени обрещения к [] Заюзай профайлер и программку graph и смотри чего там и как. - тыц и тыц 1 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #281273 Posted July 9, 2015 (edited) @StranikS_Scan, я подкорректировал, исходя из твоих рекомендаций https://bitbucket.org/ShadowHunterRUS/wot-tools-python/src/ Edited July 15, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #282707 Posted July 17, 2015 (edited) Я нашел отличный способ сделать ридер моделей primitives в питоне. Теперь есть вопрос: есть ли адекватный биндинг OpenGL под Python? Кто-нибудь работал с PyOpenGL? Edited July 17, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #283380 Posted July 19, 2015 Что вы видите на этой картинке? Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #283383 Posted July 19, 2015 Что вы видите на этой картинке? Выстрел? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #283445 Posted July 19, 2015 @StranikS_Scan, я подкорректировал, исходя из твоих рекомендаций https://bitbucket.org/ShadowHunterRUS/wot-tools-python/src/ Эффект оценивал на насколько быстрее стало? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #283471 Posted July 19, 2015 (edited) Эффект оценивал на насколько быстрее стало?~20%. На некоторых файлах до 40%. Я теперь занялся разработкой читалки примитивов. Пока все работает. Не знаю пока как оформить GUI. Склоняюсь к PyQT. Edited July 19, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #283630 Posted July 20, 2015 (edited) d Edited May 31, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #283635 Posted July 20, 2015 Склоняюсь к PyQT. Надеюсь на выходе готовое exe-приложение будет а не куча запчастей с инструкцией "собери себе прогу"? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #283638 Posted July 20, 2015 (edited) Надеюсь на выходе готовое exe-приложение будет а не куча запчастей с инструкцией "собери себе прогу"? Edited November 9, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
KACTET 317 #283656 Posted July 20, 2015 (edited) StranikS_Scan чего ты с народом в темах перестал много общаться и ушёл в подполье? Чё случилось то? Edited July 20, 2015 by KACTET Quote Share this post Link to post Short link Share on other sites
o-0-0-0 77 #283660 Posted July 20, 2015 Так лето же , море, пляж , пиво , девчёнки - вот это общение , на форум осенью вернёмся !;) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #283662 Posted July 20, 2015 Так лето же , море, пляж , пиво , девчёнки - вот это общение , на форум осенью вернёмся !;)wtf? 'девченки - вот это общение'-что вы этим хотели сказать? Quote Share this post Link to post Short link Share on other sites
SV_Kirov 1 #283674 Posted July 20, 2015 Так лето же , море, пляж , пиво , девчёнки - вот это общение , на форум осенью вернёмся !;) цитата St1m`a Quote Share this post Link to post Short link Share on other sites