Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему new String(object) устарел? (https://javascript.ru/forum/misc/13557-pochemu-new-string-object-ustarel.html)

tenshi 04.12.2010 14:39

я использую для экономии памяти

monolithed 04.12.2010 14:45

Цитата:

Сообщение от tenshi
я использую для экономии памяти

А разве не на оборот?
Я постоянно читаю различные справки на тему производительности JS и везде пишут что new Object/Array/Function/String нужно писать именно в сокращенной нотации.

tenshi 04.12.2010 15:25

var x= "много текста"
var y= x

var x= Object( "много текста" )
var y= x

что экономней?

monolithed 04.12.2010 15:55

Только что проверил:
если количество символов небольшое, то вариант с созданием объекта требует на ~20% больше времени выполнения сценария, если же брать большое количество символов, то все с точностью наоборот.

Доп.
если же вызывать объект на прямую, без промежуточной переменной, то экономия получается почти в 50%.

tenshi 05.12.2010 01:39

я про потребление памяти

что за вызов напрямую?

monolithed 05.12.2010 09:14

Цитата:

Сообщение от tenshi
я про потребление памяти

~1.5kb vs. ~6kb в пользу создания объекта. Однако на небольшом количестве символов (до 100) сложно сказать кто меньше потребляет памяти.

Цитата:

Сообщение от tenshi
что за вызов напрямую?

т.е.
var s1 = new String()
alert(s1);

либо сразу вызывать:
alert(new String());

а не так:
var s1 = new String();
s2 = s1;
alert(s2);

tenshi 05.12.2010 12:09

на небольшом количестве символов и не важно кто меньше.

x-yuri 06.12.2010 06:30

видимо, tenshi намекает на то, что тип String - не ссылочный тип. Хотя я не знаю, что может помешать реализации использовать copy on write, например

tenshi 06.12.2010 11:14

например вот это:
x = "long string"
y = x + "!"
z = x + "!"


Часовой пояс GMT +3, время: 16:45.