zoukankan      html  css  js  c++  java
  • LuaSrcDiet工具介绍(lua源码处理软件)

    Diet

    Food

    • Diet (nutrition), the sum of the food consumed by an organism or group
    • Dieting, the deliberate selection of food to control body weight or nutrient intake
      • Diet food, foods that aid in creating a diet for weight loss

    https://en.wikipedia.org/wiki/Diet

    • 节食;进行规定饮食
    • n.日常饮食;日常食物;规定饮食(为健康或减肥等目的);规定饮食的时期
    • Web食性;食谱;膳食

    https://www.bing.com/dict/search?q=diet&FORM=BDVSP2&qpvt=diet

    Diet 结合工具的使用, 应该是节食的含义, 即使用规定的饮食,达到减肥的目的。

    luaSrcDiet

    知道了英文的意思, 这里luasrcdiet == lua source code diet, 即 对lua源代码进行瘦身。

    http://luasrcdiet.luaforge.net/

    LuaSrcDiet reduces the size of Lua 5.1.x source files by aggressively removing all unnecessary whitespace and comments, optimizing constant tokens, and renaming local variables to shorter names.

    LuaSrcDiet squeezes its own (heavily commented) sources from 121KB down to 28KB. Further compression (bzip2 or lzma) brings the size down to under 10KB, representing a 12X reduction in size.

     

    Sample Output

    The following is the result of processing llex.lua from LuaSrcDiet 0.11.0 using various optimization options:

    LuaSrcDiet Option
    Size (bytes)
    Link to Sample File
    Original
    12,421
    llex.lua.txt
    Empty lines only
    12,395
    llex_emptylines.lua.txt
    Whitespace only
    9,372
    llex_whitespace.lua.txt
    Local rename only
    11,794
    llex_locals.lua.txt
    --basic (token optimizations only)
    3,835
    llex_basic.lua.txt
    Program default
    3,208
    llex_default.lua.txt
    --maximum
    3,130
    llex_maximum.lua.txt

    功能

    LuaSrcDiet features include the following:

    • Predefined default, --basic (token-only) and --maximum settings.
    • Avoid deleting a block comment with a certain message with --keep; this is for copyright or license texts.
    • Special handling for #! (shbang) lines and in functions, "self" implicit parameters.
    • Dumping of raw information: lexer tokens and local variable name tracking information
    • Plugin interface (experimental!) with HTML and SLOC plugins.
    • HTML plugin: outputs files that highlights globals and locals (useful for eliminating globals), sample: html_sample.html.
      -----
      这个挺好@!!!!!
    • SLOC plugin: counts significant lines of Lua code, like SLOCCount.

    List of optimizations:

      • Line endings are always normalized to LF, except those embedded in comments or strings.
      • --opt-comments: Removal of comments and comment blocks.
      • --opt-whitespace: Removal of whitespace, excluding end-of-line characters.
      • --opt-emptylines: Removal of empty lines.
      • --opt-eols: Removal of unnecessary end-of-line characters.
      • --opt-strings: Rewrite strings and long strings. Sample: Before and After
      • --opt-numbers: Rewrite numbers. Sample: Before and After
      • --opt-locals: Rename local variable names. Does not rename field or method names.
      • --opt-entropy: Tries to improve symbol entropy when renaming locals by calculating actual letter frequencies.

    与其他工具对比

    File sizes of LuaSrcDiet 0.11.0 main files in various forms:

    Source File
    Original Size
    (bytes)
    luac normal
    (bytes)
    luac stripped
    (bytes)
    LuaSrcDiet
    --basic (bytes)
    LuaSrcDiet
    --maximum (bytes)
    LuaSrcDiet.lua
    21,961
    20,952
    11,000
    11,005
    8,159
    llex.lua
    12,421
    8,613
    4,247
    3,835
    3,130
    lparser.lua
    41,757
    27,215
    12,506
    11,755
    7,666
    optlex.lua
    31,009
    16,992
    8,021
    9,129
    6,858
    optparser.lua
    16,511
    9,021
    3,520
    5,087
    2,999
    Total
    123,659
    82,793
    39,294
    40,811
    28,812
     
    Null
    loop
    Stripped
    binary chunk
    Original
    Sources
    Squeezed
    Sources
    Total Size
    (bytes)
    0
    39,294
    123,640
    28,793
    Iterations

    312,155
    9,680
    1306
    1,592
    Duration
    (sec)
    10
    10
    10
    10
    Time/iteration
    (msec)
    0.032
    1.033
    7.657
    6.281
    Time/iteration, adjusted for null
    (msec)
    -
    1.001
    7.625
    6.249
    Load rate
    (MB/sec)
    -
    37.44
    15.46
    4.39
    Load time per byte
    (ns)
    -
    25.5
    61.7
    217.0
    Load time per token (ns)
    -
    -
    682
    559
    Source time vs binary chunk time ratio

    -
    1.00
    7.62
    6.24
    Binary chunk rate vs. source rate ratio
    -
    1.00
    2.42
    8.53

    The LuaSrcDiet 0.11.0 files (original, squeezed with --maximum and stripped binary chunks versions) are loaded into memory first before a loop runs to repeatedly load the script files for 10 seconds. A null loop is also performed (processing empty strings) and the time taken per null iteration is subtracted as a form of null adjustment. Then, various performance parameters are calculated. Note that LuaSrcDiet.lua was slightly modified (#! line removed) to let the loadstring function run. The results below were obtained with a Lua 5.1.3 executable compiled using "make generic" on Cygwin/Windows XP SP2 on a Sempron 3000+ (1.8GHz). The LuaSrcDiet 0.11.0 source files have 11,180 'real' tokens in total.



    Null
    loop
    Stripped
    binary chunk
    Original
    Sources
    Squeezed
    Sources
    Total Size
    (bytes)
    0
    39,294
    123,640
    28,793
    Iterations

    312,155
    9,680
    1306
    1,592
    Duration
    (sec)
    10
    10
    10
    10
    Time/iteration
    (msec)
    0.032
    1.033
    7.657
    6.281
    Time/iteration, adjusted for null
    (msec)
    -
    1.001
    7.625
    6.249
    Load rate
    (MB/sec)
    -
    37.44
    15.46
    4.39
    Load time per byte
    (ns)
    -
    25.5
    61.7
    217.0
    Load time per token (ns)
    -
    -
    682
    559
    Source time vs binary chunk time ratio

    -
    1.00
    7.62
    6.24
    Binary chunk rate vs. source rate ratio
    -
    1.00
    2.42
    8.53

    The above shows that stripped binary chunks is still, in many ways, the highest-performance form of fixed Lua scripts. On a very average machine, scripts load at over 37MB/sec (in memory). This is very comparable to the burst speeds of common desktop hard disks of 2008. If instant response is paramount, stripped binary chunks has little competition.

  • 相关阅读:
    Android 自定义Dialog中加EditText弹不出键盘跟Dialog遮挡键盘的问题
    上周热点回顾(8.28-9.3)团队
    云计算之路-阿里云上-新车限行:新购服务器无法访问任何远程25端口团队
    上周热点回顾(8.21-8.27)团队
    云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题团队
    上周热点回顾(8.14-8.20)团队
    上周热点回顾(8.7-8.13)团队
    上周热点回顾(7.31-8.6)团队
    上周热点回顾(7.24-7.30)团队
    故障公告:docker swarm集群“群龙无首”造成部分站点无法访问团队
  • 原文地址:https://www.cnblogs.com/lightsong/p/6240704.html
Copyright © 2011-2022 走看看