• 白鹭 有人好奇为什么hashcode 增长的那么快么?都创建了些什么?


    带着这样的疑问, 我做了个小统计

    简单粗暴, 直接在HashObject 中插入:

    [AppleScript] 纯文本查看 复制代码
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    HashObject.count = {};
    function HashObject() {
        this.$hashCode = egret.$hashCount++;
        if(this.__proto__){
            var name = this.__proto__.__class__;
            if(name){
                HashObject.count[name] = (HashObject.count[name] || 0) + 1;
            }
        }
    }



    输出统计:
    var t1 = []; var count = egret.HashObject.count; for(let k in count){ t1.push({class:k, count:count[k]});}; t1.sort((a, b)=>{return a.count - b.count;})
    t1.forEach(v=>{console.log(v.class, v.count)})

    运行90秒左右, 总 hashCode 为 81705.
    排行前十的类:
    VM7412:1 ui.ColorLabel 584
    VM7412:1 eui.Group 598
    VM7412:1 eui.BasicLayout 837
    VM7412:1 egret.Texture 1110
    VM7412:1 eui.Label 1149
    VM7412:1 eui.State 1338
    VM7412:1 eui.Image 2614
    VM7412:1 egret.Rectangle 12692
    VM7412:1 egret.Matrix 23851
    VM7412:1 egret.Point 34043

    感觉其中大部分是 用于渲染的对象。

    然后 发现源码中, 这三个类都是有做对象池的。 为什么创建数量还是这么多呢?

    希望大家能发表一些关于对象池的使用心得。 

    对于大的对象, 逻辑比较复杂, 使用对象池, 回收的时候太麻烦怎么办?
    对于小的对象, 用完就释放了, 不使用对象池会造成什么样的不良后果?

    原文地址:https://bbs.egret.com/thread-29226-1-1.html

  • 相关阅读:
    centOS 开机自启动自己的脚本
    python SMTP 发送邮件 阿里企业邮箱、163邮箱 及535错误
    memcach 命令行
    python requests上传文件 tornado 接收文件
    Python memecache
    python Redis
    Slave_SQL_Running: No mysql同步故障解决方法
    mysql 数据库的主从同步
    Centos7 安装mysql5.7.16
    centos python2.6 升级到 python2.7
  • 原文地址:https://www.cnblogs.com/dbcpp/p/11295019.html
Copyright © 2020-2023  润新知