LINUX.ORG.RU

Оптимизация вызова методов

 , ,


0

2

Пишу в основном на c++ и привык разбивать все на небольшие методы/функции с выразительными названиями. Точно так же делаю на питоне, но оказалось, что такая разбивка намного медленнее, чем все в одном методе. Есть ли какая-то возможность бить на методы, но чтобы не страдала скорость работы или нужно смириться и писать все в одном методе?

All in one More methods

★★★★

Последнее исправление: panter_dsd (всего исправлений: 1)

пипи

пример покажи, как делаешь.
//а в общем виде, возможности такой нет, имхо

Bad_ptr ★★★★★
()

намного медленнее

Это ты каждую строчку выделяешь в отдельную функцию чтоли? Дай пример когда намного производительность проседает.

Hater ★★
()

Делать меньше точек. Поиск метода в объекте — не самая дешёвая операция.

x3al ★★★★★
()
Ответ на: комментарий от Hater

Да выдернуть тяжко. Просто был метод с несколькими вложенными циклами по словарям. Разбил метод на 3 и получил просадку на скорости.

panter_dsd ★★★★
() автор топика

Если тебе важна скорость, то сипитончег не про это. И да, pypy.

bj
()
Ответ на: комментарий от panter_dsd

Если у тебя в цикле несколько раз вызывается SomeObject.method(), то сделай перед циклом cached_method = SomeObject.method (без скобок!) и в цикле уже делай cached_method().

x3al ★★★★★
()

но оказалось, что такая разбивка намного медленнее

замеры в студию

з.ы. и код

umren ★★★★★
()
Последнее исправление: umren (всего исправлений: 1)

Python не совместим с хорошим стилем кодирования как и со скоростью выполнения.

anonymous
()
Ответ на: комментарий от panter_dsd

Да выдернуть тяжко. Просто был метод с несколькими вложенными циклами по словарям. Разбил метод на 3 и получил просадку на скорости.

Очень интересно. Покажи код. Кроме того, насколько сильно изменилась скорость?

vladimir-vg ★★
()

Точно так же делаю на питоне, но оказалось, что такая разбивка намного медленнее, чем все в одном методе.




Например, мне лучше, чем большинству, известно что локальные переменные быстрее глобальных, или что вызовы функций и методов стоят дорого (дороже, чем в C/Java) или что самый быстрый тип данных - кортеж (с) Гвидо

Solace ★★
()
Ответ на: комментарий от vladimir-vg

Кот в первом сообщении. Прирост скорости примерно в 2 раза.

panter_dsd ★★★★
() автор топика

Есть ли какая-то возможность бить на методы, но чтобы не страдала скорость работы

Да. Используй Go, Люк.

anonymous
()

More methods

Все эти однострочные статические методы дурно пахнут. Ну и да, чем дергать метод объекта в цикле, лучше предварительно создать локальную ссылку на него и использовать её.

Virtuos86 ★★★★★
()
Ответ на: комментарий от x3al

Какой питоноинтерпретатор? ОП-пост ведь про C++ был. Кажется я неправильно прочитал. Если питон, то так то да, там вроде как каждый вызов это поиск в словаре. Извините за конфуз.

hlebushek ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.