На самом деле это не ответ на мой вопрос, а только один крайний пример:
Для 100К или более сравнений между строкой и плавающей точкой (например: 0.035 == "0.035") кажется, что естьбезусловно, заметная разница в производительности составляет около 1000%, или в 10 раз. Как проверено на Chrome v77.
Если есть какая-то структура, которая делает много сравнений за кулисами, я могла бы увидеть, как это может повлиять на то, насколько "четким" это кажется. Но это также может быть совершенно неактуально. У меня нет данных для использования в фреймворке.
Для примера см. Код ниже.
print('string vs float comparison operator performance')
let start = Date.now();
let loopCount = 10000000;
let appxLoopCostRatio = 2857;
for (let i=0; i < loopCount; i++) {
let x = Math.random();
let y = Math.random().toString();
if (x == y) count++;
}
let mid = Date.now();
for (let i=0; i < loopCount; i++) {
let x = Math.random();
let y = Math.random().toString();
if (x === y) count++;
}
let mid2 = Date.now();
//no comparison
for (let i=0; i < loopCount; i++) {
let x = Math.random();
let y = Math.random().toString();
}
let finish = Date.now();
let a, b, cost;
a = mid-start;
b = mid2-mid;
cost = finish-mid2;
print('runtime == comparison:', mid-start);
print('runtime === comparison:', mid2-mid);
print('appx cost of variable generation:', finish-mid2);
let expectedCost = (loopCount / appxLoopCostRatio);
let TcCost = (b-cost < (expectedCost * 0.05)) ? (expectedCost * 0.05) : b-cost;
print(` === is more efficient by ${Math.floor((a-cost)/TcCost) * 100 }%`)