浏览器垃圾收集的基准

时间:2014-12-09 21:15:44

标签: javascript performance memory garbage-collection

似乎很多人都意识到Javascript实例的垃圾收集。

我正在编写一个框架,为了代码质量的目的,可以真正受益于返回新实例的函数,然后这些函数将被垃圾回收。就我而言,单个用户操作可以创建大约5000个这样的实例。

对象池是可能的,但会使代码复杂化。

是否有一些基准测试可以证明垃圾收集的惩罚 - 无论是在内存还是性能方面?

1 个答案:

答案 0 :(得分:0)

关于this SO question,我进行了一次小测试,其中13次创建了 10,000个实例,这些测试将被垃圾收集。

主要见解

  • GC只花费很少的时间 - 介于1 / 10-2.4 毫秒之间。
  • 平均每10,000个实例的块中约有2个GC出现。
  • 内存低于20MB标记。

测试结果

Test01使用按钮触发了几次。控制台时间表显示了这一点:

Google Console view

代码

// Bounds

function Bounds() {
    this.x = Math.random();
    this.y = Math.random();
    this.h = Math.random();
    this.w = Math.random();
}

// Rect

function Rect() {
}

Rect.prototype.getBounds = function() {
    return new Bounds();
}

// Renderer

function Renderer() {
    this.bounds = null;
}

Renderer.prototype.setBounds = function( aBounds ) {
    this.bounds = aBounds;
}

// Test

function Test01() {
    var iRenderer = new Renderer();
    var iRect = new Rect();

    for ( var i = 0; i < 100000; i++ ) {
        iRenderer.setBounds( iRect.getBounds() );
    }
}

功能

  • 2.5 GHz Intel Core i5。
  • 4GB 1600 MHz DDR3
  • Chrome 39.0.2171.71(64位)