Части ввода-вывода стандартной библиотеки Python реализованы как эффективный код C, поэтому я видел лучшую производительность, чем, например, в. Java, особенно в тех случаях, когда программа связана с вводом-выводом (в отличие от процессора).
Re:
В настоящее время большая часть времени работы этой системы приходится на чтение/запись файлов.
Кроме того, если ваша логика обрабатывает файл как поток, а не содержимое файла в целом, вы можете увидеть улучшение производительности при переходе на Python, если вы используете правильные инструменты для работы. В основном идея состоит в том, чтобы читать входные данные порциями, обрабатывать их и сразу же записывать результат в выходной файл. Это сводит к минимуму использование памяти и задержку, особенно если ваш конвейер состоит из нескольких шагов. Генераторы Python позволяют писать такую логику очень чистым, удобочитаемым и лаконичным образом, чего вы не найдете в Fortran или C, по крайней мере, без особых дополнительных усилий по построению такой абстракции (и даже тогда вы получите очень волшебный и/или загадочный код).
См. http://www.dabeaz.com/generators/ для действительно хороший текст об обработке файлов в Python с помощью генераторов.
Кроме того, в зависимости от характера и сложности ваших алгоритмов обработки вы можете обнаружить, что другие абстракции (например, сопрограммы< /strong>) или библиотеки (gevent, numpy и т. д.), доступные в Python, помогут вам повысить общую производительность, потому что так проще понять и реорганизовать код. (Конечно, это справедливо для любого сравнения языков высокого и низкого уровня.)
Кроме того, проверьте PyPy: он может предоставлять (иногда значительный ) повышение производительности по сравнению с CPython в части обработки чисел без каких-либо дополнительных усилий с вашей стороны (не говоря уже о том, что вы не могли или не должны оптимизировать свой код для JIT-компилятора PyPy :)).
Кроме того, есть Cython, который позволяет вам писать обычный Python, смешивая его с частями, которые будут преобразованы напрямую. в код Си. Это имеет преимущество в лучшей ремонтопригодности и удобочитаемости по сравнению с Fortran (и C) с производительностью C, позволяя вам использовать большинство, если не все высокоуровневые конструкции Python, а также вызывать непосредственно чистый код Python, а также чистый Код/библиотеки C (и, возможно, код/библиотеки Fortran: http://www.sfu.ca/~mawerder/notes/calling_fortran_from_python.html). Вы также можете просто написать части вашего кода, критически важные для производительности (привязанные к ЦП), на Cython и вызывать их непосредственно из Python.
person
Erik Kaplun
schedule
07.10.2013