- 主题:js这种写法会不会太耗内存?
function sleep(milliSeconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + milliSeconds);
}
sleep(10000);
--------------------------------------
上面这种写法是否会导致一直创建对象,占据很大的内存。改为下面的,是否好些?
function sleep(milliSeconds) {
var startTime = new Date().getTime();
var date = new Date();
for(;date.getTime() < startTime + milliSeconds; date = null, date = new
Date());
}
sleep(10000);
--
FROM 125.119.254.*
你这种写法浏览器会跑崩掉吧……
【 在 saynothing (止语) 的大作中提到: 】
: function sleep(milliSeconds) {
: var startTime = new Date().getTime();
: while (new Date().getTime() < startTime + milliSeconds);
: ...................
--
FROM 180.169.51.*
浏览器很多。怎么看都觉得你这种while循环等待一段时间的做法很不好。
【 在 saynothing (止语) 的大作中提到: 】
: function sleep(milliSeconds) {
: var startTime = new Date().getTime();
: while (new Date().getTime() < startTime + milliSeconds);
: ...................
--
FROM 120.42.88.*
这很明显其他语言的特性吧。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 浏览器很多。怎么看都觉得你这种while循环等待一段时间的做法很不好。
--
FROM 123.117.166.220
function sleep(milliSeconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + milliSeconds);
}
sleep(10000);
老鱼,这段代码是从<The node beginner book>里面摘取出来的。 作者不过是做了个例
子说明(实际不太会这样干),延时10s(js没有sleep()函数)。
我总觉得while里面不停地创建对象,这种方式浏览器引擎要是能知道对象不用了,可以
GC,那也没问题。 c++写法习惯了,可能画蛇添足。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 浏览器很多。怎么看都觉得你这种while循环等待一段时间的做法很不好。
--
FROM 125.119.254.*
大概只有spinlock才会这么干吧。而且spinlock的实现其实挺复杂的,需要考虑很多东西。其它场景很少见到这种东西。
【 在 shaolin (漫漫当爹路) 的大作中提到: 】
: 这很明显其他语言的特性吧。
--
FROM 120.42.88.*
浏览器里面用 setTimeout() 来实现这种计时功能,但是计时单位很不准就是了。我记得最小刻度是13ms。
刚才把你这代码贴到chromium里面跑一下,看profile,对象数量并没有增加很多,估计是chromium把你这代码优化掉了。
【 在 saynothing (止语) 的大作中提到: 】
: function sleep(milliSeconds) {
: var startTime = new Date().getTime();
: while (new Date().getTime() < startTime + milliSeconds);
: ...................
--
FROM 120.42.88.*
这种恒为真的空循环,某些浏览器铁定挂。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 浏览器里面用 setTimeout() 来实现这种计时功能,但是计时单位很不准就是了。我记得最小刻度是13ms。
: 刚才把你这代码贴到chromium里面跑一下,看profile,对象数量并没有增加很多,估计是chromium把你这代码优化掉了。
--
FROM 123.117.166.220