Совершенно бессмысленно сравнивать алгоритмы на языке сценариев. После выполнения тестов какую реализацию факториала вы бы использовали в PHP? (при условии, что вы не можете использовать встроенный по какой-то причине.)
Это - это довольно бессмысленно для эталонного теста в языке, который имеет существенно отличающиеся особенности от того, в котором вы хотите реализовать алгоритм. Здесь, относительная стоимость вызовов функций и if
операторов в PHP значительно искажает результаты (или это мое лучшее предположение в любом случае). Если вы будете осторожны, чтобы понять, почему это происходит, и избегать этого, это все равно может быть плодотворным: как вы заметили, различия будут более преувеличенными. Все сводится к тому, легче ли писать на целевом языке или обходить различия.
Простого расчета сложности алгоритма должно быть достаточно, чтобы решить, какой из них использовать, или хотя бы сузить выбор.
Как отмечает Майк Аксиак в комментариях, вы даже не тестируете здесь разные алгоритмы, вы тестируете две разные реализации одного и того же алгоритма: оставьте работающий продукт более i
с n
до 1
. Делать это на другом языке, нежели цель, почти всегда бессмысленно.