Если у нас есть два способа присвоения этой переменной, либоПочему нет, если еще быстрее, чем значение по умолчанию?
if(condition){
var a = "Condition is true";
} else {
var a = "Condition is false";
}
или
var a = "Condition is false";
if(condition){
a = "Condition is true";
}
лично я ожидал бы бывший быть намного быстрее, учитывая переменную всегда только пишется один раз, в отличие возможно, записывается дважды, и условие используется в обоих случаях.
Поскольку Javascript является языком, на котором я наиболее свободно, создали this jsperf, и кажется, что оба варианта примерно одинаково быстры. Почему это?
- Является ли стоимость письменности переменной такой небольшой?
- Включается ли оптимизация, которая делает оба случая равными? (В случае Firefox, кажется, оба случая являются равны!)
Если у вас есть объяснение такого поведения, примеры других языков, которые противоречат этой или, может быть, моему JSPerf просто ошибочный, я бы быть действительно заинтересован в этом.
обе строки должна быть встроена в коде, несмотря на это, так что технически, это просто назначение указателя внутри , 'mov eax, [location_of_string]'. это операция в 1 цикл и в великой схеме вещей, по существу «свободная». выполнение двух заданий может иметь «двойную» стоимость, но стоимость настолько микроскопическая, что в значительной степени неизмерима. –
@Marc Является ли весь тестовый пример не очень маленьким, так что даже эта небольшая разница должна быть более заметной? – JustAPoring