Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Google выпустила версию Chromium с поддержкой Dart «Dartium» (https://javascript.ru/forum/offtopic/25892-google-vypustila-versiyu-chromium-s-podderzhkojj-dart-dartium.html)

Mахmахmахimus 19.02.2012 19:28

Nekromancer,
как бы нужен так то чтобы работало;)
Ну сделай пример без бинда) гляну что ль как это делается у отцов js))

Nekromancer 19.02.2012 19:30

(function(){
var log = console.log;
 
console.log = function(a){
    alert(a);
    log.apply(this, arguments);
}
 
})();
console.log("It's a Magic!")

Mахmахmахimus 19.02.2012 19:32

Здесь apply не нужен как бы, он сильнее тормозит чем бинд) бинд фиксируется один раз)
а эплай ищется в прототипах функции и.т.п.

Nekromancer 19.02.2012 19:39

Mахmахmахimus,
Ну во первых твой bind не сработает при аргументах больше одного :) А во вторых, сделай бенчмарк.

Mахmахmахimus 19.02.2012 19:49

Цитата:

Сообщение от Nekromancer
Ну во первых твой bind не сработает при аргументах больше одного

ясно) а почему ты сказал что это не нужно? я не использую консоль с больше одного аргумента). А во вторых бинд быстрее)
в среднем бинд выдавал (алерт убрал) 1900-2100
а эплай выдавал
2300 - 2900

на 10 000 итераций

но спасибо что сказал, ты же не знал что я знаю про эплай)

Ну так что, это декоратор?

Nekromancer 19.02.2012 19:51

Mахmахmахimus,
Да ты нам сам бенчмарк покажи, а не то сколько выдавал он. Мы сами и проверим.

Mахmахmахimus 19.02.2012 19:56

Nekromancer,
Вы там всем офисом за компом сидите;) ?

(function(){
var log = console.log.bind(console);

console.log = function(a){
    log(a);
}

})();

var start = new Date()
for ( var i = 0; i < 100000; i++) {
	console.log('d', 'gg');
}

alert((new Date()) - start)


(function() {
	var log = console.log;

	console.log = function() {
		log.apply(this, arguments);
	}

})();

var start = new Date()
for ( var i = 0; i < 100000; i++) {
	console.log('d', 'gg');
}

alert((new Date()) - start)

Nekromancer 19.02.2012 20:01

Mахmахmахimus,
Не-не-не, запускать даже не буду. И ты наверно не запускал. Ты в курсе что в хроме можно максимум 1000 раз отпечатать в консоль подряд?
А может ты ещё всё таки для правильно бенчмарка заменишь apply на call и будешь передавать один аргумент, ведь bind с несколькими в данном случае не работает?

Mахmахmахimus 19.02.2012 20:04

monolithed,
что означает стрелочка?
->

Mахmахmахimus 19.02.2012 20:06

Цитата:

Сообщение от Nekromancer
Не-не-не, запускать даже не буду

да короче я много раз редактировал запутался, там было вначале 10 000 итераций поом сделал больше, но слишклм много щас поправил. короче я понял тебя, ты рекомендуешь в деаораторах использовать эплай а не бинд?? ясно


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