Если вы хотите, чтобы программа работала быстрее, вам нужно понять, что заставляет программу работать медленно.Область компьютерных наук, посвященная измерению производительности работающей программы, называется profiling .
Как только вы обнаружите, какая внутренняя часть вашей программы работает медленно, вы, как правило, можете ускорить ее.То, как вы ускорите этот элемент, во многом зависит от того, что делает «медленная часть» и как она «выполняется».
Несколько человек рекомендовали каналы для перемещения данных непосредственно из выходных данных одной программы.на вход другой программы.Предполагая, что вы переписываете свои инструменты для обработки ввода и вывода по трубопроводу, это может повысить производительность.Опять же, это зависит от что вы делаете и как вы делаете это.
Например, если ваш инструмент просто исправляет конец строки в стиле Windows вконец строки в стиле Unix, программа может читать в одну строку, ожидая, пока она станет доступной, проверять конец строки и записывать строку с нужным концом строки.Или инструмент может прочитать все данные, выполнить замену для каждого «неправильного» конца строки в памяти, а затем записать все данные.С первым решением, трубопровод ускоряет процесс.Со вторым решением конвейер ничего не ускоряет.
Причина, по которой действительно так сложно ответить на такой вопрос, заключается в том, что нужное вам исправление на самом деле зависит от кода, который у вас есть,проблема, которую вы пытаетесь решить, и средства, которыми вы решаете ее сейчас.В конце концов, не всегда есть 100% гарантия того, что код можно ускорить;тем не менее, практически каждый фрагмент кода имеет возможности для ускорения.Используйте профилирование, чтобы ускорить медленные части, вместо того, чтобы тратить время на работу с частью вашей программы, которая вызывается только один раз и составляет 0,001% времени выполнения программы.
Помните, что если вы что-то ускоряетеэто составляет 0,001% времени выполнения вашей программы на 50%, вы фактически только ускорили всю вашу программу на 0,0005%.Используйте профилирование, чтобы определить блок кода, который занимает 90% времени выполнения, и сосредоточиться на нем.