Обычно мне приходится писать программу для чтения текстового файла, например. таблицу фраз, строка за строкой, затем разделите их и сделайте что-нибудь. Однажды мне стало любопытно, какой язык программирования подходит для этой задачи. Поэтому я создал этот тест.
Это входной файл:
(сделать что-то какой-то объект :с-arg0 arg0 :с-arg1 arg1) ||| ให้เล่นด้วย ก็เลยลองดูภาษาไทย ก็ตามคาดจอวเช|๊| Вы можете использовать Servo в Firefox или Firefox.
Я просто продублировал вышеприведенный лайв 999 999 раз.
Каждую программу я запускал 3 раза и находил среднее время использования.
Я начал с моего любимого языка Ruby!
Среднее время, используемое для этого программирования на Ruby 2.3.0, составляет 4,581 секунды.
Обновление: как предложил @visibletap, я также добавил императивную версию Ruby:
Это заняло 4,345 секунды.
Я не знаком с Haskell, но все же хочу попробовать.
Среднее время использования этой программы в Haskell (GHC 7.10.3) составляет 24,666 секунды. После того, как я увидел результат, я думаю, что сделал что-то не так; поэтому я пытаюсь использовать ByteString.
Среднее время использования составляет 6,063 секунды, что намного быстрее, чем в предыдущей версии, но все же медленнее, чем версия, написанная на Ruby.
Обновление: приведенный ниже код изменен из кода, представленного Patraphong Sukhonpitumart:
Вы также можете проверить оригинальный код Patraphong здесь:
Это заняло всего 1,071 секунды.
Python 3.5.2 на удивление быстр. Это заняло всего 2,296 секунды.
F# 4.0 в моно версии 4.2.1:
Это заняло 5,034 секунды, что лишь немного медленнее, чем в Ruby.
Clojure 1.8.0 на OpenJDK 1.8.0_91 (работает inlein):
Это заняло 5,254 секунды.
JavaScript на Node.js версии 6.5.0:
Это заняло 4,164 секунды.
И, наконец, Rust 1.12.0-nightly (1deb02ea6 2016–08–12):
Как и ожидалось, даже время компиляции оказалось больше, чем время выполнения :-P. Это заняло всего 1,549 секунды.
Я не включаю Guile 2.3.1 и SBCL 1.3.1, так как только чтение текста построчно занимает очень много времени. Я тоже хотел попробовать OCaml, но мне потребовалось так много времени, чтобы написать код в OCaml, поэтому я удалил его из списка.
- Хаскель 1.071s
- Ржавчина 1.549с
- Питон 2.296s
- JavaScript 4.164 с
- Рубин 4.345s
- F# 5.034s
- Clojure 5.254s
Обновление: спасибо Patraphong Sukhonpitumart, теперь версия на Haskell становится самой быстрой.
Для этой задачи я бы выбрал Rust или Python. Хотя версия Python медленнее, чем Rust, она менее сложна.