Python

Что это такое

Что такое оптимальность кода?
Aleksey Tretyakov
Aleksey Tretyakov
182
В программировании - это затраты ресурсов компьютера (далеко не всегда это только время работы кода - в каждом конкретном случае учитывается множество условий) на выполнение твоего кода по сравнению с другими способами решения этой же задачи в заданных условиях. Не существует единственного оптимального способа, пригодного для всех условий. Одна и та же задача для разного объёма RAM, разного объёма и разной структуры данных, разной скорости HDD/SDD может иметь совершенно разные оптимальные решения.

Например, большинство встроенных в языки программирования функций сортировки используют внутри себя QuickSort (быстрая сортировка). И в большинстве типичных случаев это корректный выбор.

Но если у тебя массив из 10 элементов, "медленная" пузырьковая сортировка (BubbleSort) будет быстрее любой "быстрой", т. к. "быстрая" сортировка обгоняет "медленную" только на достаточно больших наборах данных.
Если у тебя много данных и мало памяти (Arduino), QuickSort не годится, т. к. требует дополнительную память во время работы: необходимо использовать пирамидальную сортировку (HeapSort).
Если у тебя база данных с миллиардами записей в таблице, необходима сортировка слиянием (MergeSort), т. к. все сортируемые данные в память одновременно не влезут и надо обрабатывать набор данных частями.
Если же ты реализуешь BWT (основанный на сортировке очень простой алгоритм, применяемый в архиваторах, позволяющий существенно увеличить степень сжатия), то ни одна из популярных сортировок вообще не подойдет: для реализации BWT придумывают специализированные алгоритмы сортировки.

И задача программиста - уметь выбрать из десятков разных способов решения задачи оптимальный для данных конкретных условий.

P.S. "на сколько быстро мы её решим", "перегрузка операций, использование указателей, дублирование строк, проверка и изменение значений переменных" никакого отношения к оптимальности кода не имеют. Оптимальность кода никогда не оценивается временем написания этого кода.

P.P.S. Как известно, 20% кода выполняются 80% времени. И оптимальность требуется не для всего кода программы, а только для критически важных участков.
Игорь Котелевский
Игорь Котелевский
50 588
Лучший ответ
В программировании это количество времени, которое будет выделено для решения задачи, то есть на сколько быстро мы её решим. Как правило, для каждой задачи своё оптимальное решение. Для этого существуют оптимизации: перегрузка операций, использование указателей, дублирование строк, проверка и изменение значений переменных. И всё это делается в рамках одного класса. Гуглить научись, сайплхер недоделанный
Aleksey Tretyakov сайплхер? это еще что за ругательство?
Михаил Битюцкий Так называют чайников в пайтоне

Похожие вопросы