StranikS_Scan 4,210 #301610 Posted November 28, 2015 весь затык в поиске индекса элемента, в большом списке. Покажи чуть больше. Если нужно искать индекс элемента, то имеет смысл изначально элементы проиндексировать: a = ['a', 'b', 'c'] заменить на b = {0: 'a', 1: 'b', 2: 'с'} При этом как известно словари работают в разы быстрее списков. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301611 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301612 Posted November 28, 2015 (edited) enumerator же) Он работает при переборе. А зачем нам перебор, если изначально можно хранить данные как b = {0: 'a', 1: 'b', 2: 'с'} и это само уже по себе всегда будет быстре нежели list() Edited November 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301613 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301615 Posted November 28, 2015 (edited) vert_list = {} old2new = {} vidx = 0 for i in range(verticesCount): self.__primitives_file.seek(pos) x, z, y, n, u, v = unpack('<3fI2f', self.__primitives_file.read(24)) if is_skinned: y = -y if flgNewFormat: N = unpackNormal_tag3(n) else: N = unpackNormal(n) XYZ = Vector((x, y, z)) UV = Vector((u, 1-v)) XYZNUV = (XYZ, N, UV) # Вот эта часть тормозит: # Возможно из-за vert_list.index(XYZNUV) if XYZNUV not in vert_list: old2new[i] = vidx vidx += 1 vert_list[XYZNUV] = vidx else: old2new[i] = vert_list[XYZNUV] pos += SIZE Пробуй ))))) Edited November 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301617 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301618 Posted November 28, 2015 PS: .index() - это тормозящая хрень ))) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301620 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301625 Posted November 28, 2015 (edited) Сам разбери мой код, что я выше писал. Там вместо списка сделан словарь vert_list = {} ЗЫ: Массив это array, в питоне правильно говорить списки и словари, а иначе не ясно что ты имеешь ввиду Edited November 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301626 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301628 Posted November 28, 2015 Я про tuple) Это неизменяемый список tuple([1,2,3]) = (1,2,3) Но причем тут все это? Тебе нуно чтобы vert_list по завершению алгоритмы стал списком?, дык list(vert_list.keys()) тебе поможет ))) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301630 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301631 Posted November 28, 2015 Быстрее стало? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301632 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301634 Posted November 28, 2015 Оптимизация - уровень бог Ну дык, я также парился с обфускатором, потому делюсь тем что сам видел )))) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301637 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
Degit22 42 #301638 Posted November 28, 2015 Теперь на модель стало страшно смотреть, алгоритм испорчен( работает быстро, но хрень получается?) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301641 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301646 Posted November 28, 2015 (edited) @StranikS_Scan, list(vert_list.keys()) - портит порядок вершин, который должен быть неизменным( Т.е. есть у нас словарь: a = { 'a':1, 'abvgd':2, 'abcd':4, 'azaza':3 } и мы должны получить b == ['a', 'abvgd', 'azaza', 'abcd'] Это проблема номер два гыгыггы )))) Короче нельзя просто взять .keys() надо инdертировать словарь, тогда номера станут ключами, а вершины значениями и питон в таких случаях уже сам отсортирует словарь по цифрам ключей и тогда можно будет брать .itervalues() Edited November 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #301648 Posted November 28, 2015 (edited) del Edited January 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites