Обычно мне приходится писать программу для чтения текстового файла, например. таблицу фраз, строка за строкой, затем разделите их и сделайте что-нибудь. Однажды мне стало любопытно, какой язык программирования подходит для этой задачи. Поэтому я создал этот тест.

Это входной файл:

(сделать что-то какой-то объект :с-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, она менее сложна.