美文网首页
lua使用的一点建议

lua使用的一点建议

作者: Teech | 来源:发表于2020-03-20 22:15 被阅读0次
    • string 拼接大量字符串 少用默认连接符号
      当需要拼接大量字符串的时候,少用默认的字符串连接,如果大量字符串连接时,尽量用table,然后table.concat来连接字符串。这个做法用table作为一个缓冲区,一次性连接。而不是中间产生大量中间临时的字符串。因为每次新建一个字符串都会有哈希值计算,哈希查找,最后还需要gc这些消耗。
    • table 尽量预先填充
      因为如果不预先填充,每次都是插入,会经常会有rehash的情况发生,因为lua本身为了内存利用率保证可以到50%以上,插入会经常rehash发生,尤其表比较小的时候。
    • weak table 在同一个vm中不要大量使用弱表
      在propagate的最后一个阶段,会原子性的标记弱表链表的,这个过程会stop the world,这里潜在会引起卡顿,参考atomic函数,
      /* remark weak tables */
      g->gray = g->weak;
      g->weak = NULL;
      lua_assert(!iswhite(obj2gco(g->mainthread)));
      markobject(g, L);  /* mark running thread */
      markmt(g);  /* mark basic metatables (again) */
      propagateall(g);
    

    相关文章

      网友评论

          本文标题:lua使用的一点建议

          本文链接:https://www.haomeiwen.com/subject/rggsyhtx.html