_Перевод поста Джона Маклуна (Jon McLoone) "[10 Tips for Writing Fast Mathematica Code][1]". Выражаю огромную благодарность Кириллу Гузенко [KirillGuzenko][2] за помощь в переводе._
----
Пост Джона Маклуна рассказывает о распространенных приемах ускорения кода, написанного на языке Wolfram Language. Для тех, кто заинтересуется этим вопросом мы рекомендуем ознакомиться с видео «Оптимизация кода в Wolfram Mathematica», из которого вы подробно и на множестве интересных примеров узнаете о приемах оптимизации кода, как рассмотренных в статье (но более детально), так и других.
----
Когда люди говорят мне, что [_Mathematica_][3] недостаточно быстро работает, обычно я прошу посмотреть код и часто обнаруживаю, что проблема не в производительности _Mathematica_, а в её не оптимальном использовании. Я хотел бы поделиться списком тех вещей, на которые я обращаю внимание в первую очередь при попытке оптимизировать код в _Mathematica_.
Самая распространённая ошибка, которую я замечаю, когда разбираюсь с медленным кодом — задание слишком высокой точности для данной задачи. Да, неуместное использование точной символьной арифметики — самый распространенный случай. У большинства вычислительных программных систем нет такого понятия, как точная арифметика — для них 1/3 это то же самое, что и 0,33333333333333. Это различие может играть большую роль, когда вы сталкиваетесь со сложными и неустойчивыми задачами, однако для большинства задач числа с плавающей точкой вполне удовлетворяют нуждам, и что важно — вычисления с ними проходят значительно быстрее. В _Mathematica_ любое число с точкой и с менее чем 16 цифрами автоматически обрабатывается с машинной точностью, потому всегда следует использовать десятичную точку, если в данной задаче скорость важнее точности (например, ввести треть как 1./3.). Вот простой пример, где работа с числами с плавающей точкой проходит почти в 50,6 раза быстрее, чем при работе с точными числами, которые лишь затем будут переведены в числа с плавающей точкой. И в этом случае получается такой же результат. [Читать дальше →][4]
[1]:
http://blog.wolfram.com/2011/12/07/10-tips-for-writing-fast-mathematica-code/
[2]:
http://habrahabr.ru/users/kirillguzenko/
[3]:
http://www.wolfram.com/mathematica
[4]:
http://habrahabr.ru/post/262879/#habracut