Сравнение скорости работы nodejs, php, python, lua, luajit часть 3, сортировка массивов



В этой части будем тестировать сортировку числовых массивов. Node.js: array.sort(), PHP: sort(), Python: array.sort(), Lua: table.sort()

Исходники тестов:

PHP

<?php

$lengths = [
  1000,
  10000,
  100000,
  1000000,
  10000000
];

foreach($lengths as $len) {
  $arr = [];
  for($i=0; $i<$len; $i++)
    $arr[] = mt_rand() / mt_getrandmax();

  $startTime = microtime(true);

  sort($arr, SORT_NUMERIC);

  $worktime = microtime(true) - $startTime;
  echo "LEN=$len, RESULT=$worktime
";
}

?>

Python

from random import random
import time

lengths = [
  1000,
  10000,
  100000,
  1000000,
  10000000
]

for len in lengths:
  arr = []
  i = 0
  while i < len:
    i += 1;
    arr.append(random())
  
  startTime = time.time()

  arr.sort();

  worktime = time.time() - startTime
  print( "LEN=" + str(len) + ", RESULT=" + str(worktime) )

JavaScritp/Node.js

const lengths = [
  1000,
  10000,
  100000,
  1000000,
  10000000
];

for(let len of lengths) {
  let arr = [];
  for(let i=0; i<len; i++)
    arr.push( Math.random() );
  
  let startTime = Date.now();

  arr.sort( function(a, b) { return a - b });

  let worktime = Date.now() - startTime;
  console.log( `LEN=${len}, RESULT=${worktime / 1000}`);
}

Lua/LuaJit

local lengths = {
  1000,
  10000,
  100000,
  1000000,
  10000000
}

for index, len in ipairs(lengths) do
  math.randomseed( os.time() )

  local arr = {}
  for i = 1, len, 1 do
    table.insert(arr, math.random())
  end

  local startTime = os.clock();

  table.sort(arr)

  local workTime = os.clock() - startTime;
  print( 'LEN=' .. len .. ', RESULT=' .. workTime )
end

Для тестов как обычно используем 5-и долларовую виртуалку на линоде, версии софта: PHP: 7.0.30, Python: 3.5.3, Node.js: 10.6.0, Lua: 5.3.3, LuaJit: 2.0.4. За исключением ноды, весь софт из стандартного дистрибутива debian.

Результаты

Array length 1000 10000 100000 1000000 10000000
PHP 0.0001s 0.0018s 0.0217s 0.2784s 3.1013s
LuaJit 0.0002s 0.0038s 0.0500s 0.6366s 7.3314s
Lua 0.0004s 0.0053s 0.0702s 0.9161s 9.5855s
Python 0.0005s 0.0039s 0.0547s 0.9600s 15.283s
Node.js 0.0050s 0.0240s 0.1640s 1.7780s 32.1680s

Заключение

Моя любимая нода в этом тесте слила в салат. PHP оказался на голову выше всех, и наконец-то луа показал достойные результаты.


Сообщество: AWS

Комментариев(1)


ID: #719   Создан:
Автор: anonym

В 2021 PHP - без изменения, Lua = LuaJit, Python - в трое быстрее, Node.js - почти в 2 раза быстрее, js78 (Mozilla) - почти PHP.

Всего: 1 комментариев на 1 страницах

Ваш комментарий будет анонимным. Чтобы оставить не анонимный комментарий, пожалуйста, зарегистрируйтесь



Сообщества