В настоящее время я тестирую производительность определенных операций со списками в C#
и JavaScript
, чтобы определить разрыв между ними.
В настоящее время я тестировал скорость добавления элементав список в C#
и JavaScript
. Здесь я обнаружил, что каким-то образом JavaScript смог превзойти C#
, хотя мое предварительное исследование показало, что C#
должно быть немного быстрее.
C#:
var time = Stopwatch.StartNew();
var loops = 10000000;
var strList = new List<string>();
time.Start();
for (var i = 0; i < loops; i++)
{
strList.Add("Loop" + i);
}
time.Stop();
Console.WriteLine("TIME: " + time.ElapsedMilliseconds + "ms");
JS:
var t0 = performance.now();
var loops = 10000000
strList = []
for(var i = 0; i < loops; i++)
{
strList.push("Loop" + i);
}
var t1 = performance.now();
console.log("TIME: " + (t1-t0) + "ms");
Я заметил, что когда я заменил функцию strList.push("Loop" + i);
на обоих языках на strList.push("Loop")
(без индекса) производительность выросла на огромную величину.
With index:
C#
:
-3805ms
JavaScript
:
- Chrome: 6048ms
- Firefox: 1248ms
Without index:
C#
:
-166ms
JavaScript
:
- Хром: 348ms
- Firefox: 154ms
Подводя итог, мой вопрос: почему C # выполняет JavaScript, когда JS запускается на Firefox? И почему добавление индекса в список приводит к такому экстремальному снижению производительности? Есть ли другой способ сделать это быстрее?
Заранее спасибо!