2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Оптимизация кода в Python
Сообщение21.01.2011, 01:25 


15/01/11
5
Вопрос к тем кто знает Python:

Я пишу программу, в которой будет очень много зависимостей между классами, функциями и условными операторами. Своего рода ИИ, анализирующий схему и на основе анализа выбирающий применяемые функции. Учитывая, что язык интерпретируемый, боюсь что все это будет медленно работать.
Потому вопрос:

1. Отличается ли скорость выполнения заданной заранее и после примененной функции, линейного кода метода класса? И как? Стоит ли выигрыш в скорости усложнения читабельности кода, если писать его линейно?

2. Как сделать объект принадлежащим сразу двум классам, не создавая класс-наследник? Это в принципе возможно?

3. Как лучше считывать большой объем текстовой информации из файла и сортировать ее построчно? Создавать массив, сортировать и заново переписывать не очень разумно. И может ли Питон импортировать из текстового файла переменные без преобразования?

4. К вопросу о массиве. Нужно сортировать строки по убыванию числового значения в начале строки каждый раз перед закрытием файла. Значения изменяются каждый раз при работе программы, плюс добавляются новые строки. Как это реализовать? О_о

5. Можно ли импортировать декораторы?

Заранее спасибо

 Профиль  
                  
 
 Re: Оптимизация кода в Python
Сообщение21.01.2011, 08:21 
Аватара пользователя


22/12/10
264
Выигрыш в производительности не стоит читабельности кода при использовании интерпретируемых языков никогда. Если вам позарез нужна производительность, возьмите C и пишите на нём читабельный код.

1. Не понял ничего.
2. А зачем?
3. Использовать внешнюю сортировку?
4. Не понял, в чём сложность.
5. Можно, это обыкновенные функции.

 Профиль  
                  
 
 Re: Оптимизация кода в Python
Сообщение21.01.2011, 22:29 


15/01/11
5
Пожалуй Вы правы, выигрыш действительно того не стоит...

В С, точнее в С++ либо нет некоторых возможностей, либо они реализованы так, что я буду год писать, а потом пять - разгребать( Как вариант - переписать впоследствии некоторые модули на С++, когда будет отлажен алгоритм.

1. К примеру: есть функция func(x, y). Применяется она от силы один-два раза. Стоит ли ее писать отдель, как функцию, или лучше написать линейный код пару раз?

2. Например есть класс "женщины" и класс "мужчины", есть класс "брюнеты" и класс "рыжие". И надо создать объекты "рыжая женщина", "рыжий мужчина", "мужчина-брюнет", "женщина-брюнетка". Для каждого класса свой довольно внушительный список методов.

3, 4. В принципе уже разобрался. Сделал так: программа считывает информацию из файла при запуске, в процесс работы добавляет\убирает значения, и перед выходом сортирует и записывает обратно в файл.

 Профиль  
                  
 
 Re: Оптимизация кода в Python
Сообщение22.01.2011, 20:48 
Аватара пользователя


22/12/10
264
Да, написать и отладить на питоне, а потом переписать на C — это вполне вариант.

1. На вызов функции тратится некоторое время, но не большое. Если ф-ция вызывается пару раз — лучше её выписать отдельно. Вот если бы она вызывалась много раз в секунду, можно было бы подумать об оптимизации (инлайне).

2. Сначала долго думать, нужно ли вам такое. Обычно это означает ошибку в дизайне программы, но не всегда. Если действительно нужно — гуглить по словам python mixins. Например, см. http://www.wellho.net/resources/ex.php4?item=y112/m_i_m .

 Профиль  
                  
 
 Re: Оптимизация кода в Python
Сообщение22.01.2011, 23:26 


15/01/11
5
1. разве в Питоне есть инлайн или аналог? О_о

2. Есть как вариант классы с меньшим кол-вом атрибутов вывести в мета и выбирать их при создинии объекта через if-else.
Суть то такая: есть ионы, радикалы и нейтральные частицы, а также есть органические и неорганические молекулы. Программа должна сама определять, органика это или нет и тип частицы.

 Профиль  
                  
 
 Re: Оптимизация кода в Python
Сообщение24.01.2011, 08:34 
Аватара пользователя


22/12/10
264
1. Нет. Но для пары вызовов функции он и не нужен.

 Профиль  
                  
 
 Re: Оптимизация кода в Python
Сообщение24.01.2011, 08:46 
Заслуженный участник


19/07/08
1266
vir.mirabilis в сообщении #403258 писал(а):
1. разве в Питоне есть инлайн или аналог? О_о
Питон умеет вызывать библиотечные функции написанные на c++, кроме того, c++ умеетможно научить работать с питоновскими классами. Про это можно почитать в стандартной документации Питона.
Написать на Питоне, потом критичные по скорости места переписать на с++ -- стандартный подход. Так большинство модулей было написано.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group