zoukankan      html  css  js  c++  java
  • 白鹭 有人好奇为什么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

  • 相关阅读:
    msfvenom常用脚本生成
    CC攻击防护方法
    上传漏洞分类
    cmd下载文件(利用powershell)
    发送HTTP请求的新姿势
    (转载).NET Core 深度克隆对象,引用类型的平行世界
    使用VMware安装centos7并配置网络
    (转载)这才是真正的远程开发——VS Code Remote 环境搭建
    (转载)基于Vue,ElementUI开发的一款表单设计器
    (转载)VMWare VMNet 8 的配置使用
  • 原文地址:https://www.cnblogs.com/dbcpp/p/11295019.html
Copyright © 2011-2022 走看看