Tairy
V2EX  ›  PHP

代码里的注释会影响性能么?

  •  
  •   Tairy · Jul 6, 2017 · 21374 views
    This topic created in 3410 days ago, the information mentioned may be changed or developed.

    刚听说 PHP 代码发布到生产环境要去除掉代码里的注释,有这么操作的么,反正我是惊呆了!

    127 replies  •  2017-07-07 23:22:07 +08:00
    1  2  
    ❮ ❯
    whx20202
    whx20202
    Jul 6, 2017
    1
    不会吧
    eoo
    eoo
    Jul 6, 2017 via Android
    2
    JavaScript JAVA Python C C++ 代码里的注释会影响性能么?
    echo1937
    echo1937
    Jul 6, 2017 via iPhone
    3
    你太小看现代编译器的水平了
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Jul 6, 2017
    4
    肯定不会呀
    zbl430
    zbl430
    Jul 6, 2017
    5
    php 引擎根本不对空行和注释进行解析,直接忽略掉。它们不参与计算代码行数也不参与程序的执行,对程序执行效率也没有影响!
    你想呀,注释和空行如果会影响解析速度的话,为啥 phpDocument 里提倡大家多写注释呢!还有人说一份好的代码,有 50%以上的注释,才是正常的!
    binjoo
    binjoo
    Jul 6, 2017
    6
    代码运行的时候注释都会去忽略掉,应该不会影响吧。

    求大神科普。
    alqaz
    alqaz
    Jul 6, 2017
    7
    运行时要加载源码的语言肯定都会有影响,影响大小就不好说。
    phx13ye
    phx13ye
    Jul 6, 2017
    8
    编译器词法还是语法分析阶段会帮你做
    zhanglintc
    zhanglintc
    Jul 6, 2017 via iPhone
    9
    嗯?这么说好像还真有点可能,解释型语言毕竟判断它是注释也是要花时间的。
    mokeyjay
    mokeyjay
    Jul 6, 2017 via Android
    10
    理论上,纯净的 php 在每次执行时都会读取源文件并解析,较大的源文件会影响读取速度
    实际上影响忽略不计,再说都直接上 opcache 或其他缓存技术了,也不会每次都读源文件
    TIGERB
    TIGERB
    Jul 6, 2017
    11
    谁说的,叫出来聊聊
    lightening
    lightening
    Jul 6, 2017
    12
    毕竟要多读几个字节,应该是要花时间的吧?
    honeycomb
    honeycomb
    Jul 6, 2017
    13
    静态语言,仅会在编译时增加一点点 IO 开销
    如果是 javascript 的情况,类似地也只有加载到内存时有可以忽略的 IO 开销,相比之下,将其从云端传输到客户端的开销会因为注释导致的 js 体积增大而增加
    sfz97308
    sfz97308
    Jul 6, 2017❤️1
    14
    编译型的语言一定不会影响,因为编译的时候就已经把所有注释滤掉了。
    解释型的语言可能有一点点影响吧,毕竟运行的时候才去过滤注释。
    至于 PHP... 应该影响不大吧,毕竟是最好的语言 :doge:
    explon
    explon
    Jul 6, 2017❤️1
    15
    楼主可以考虑换家公司了
    Shura
    Shura
    Jul 6, 2017 via Android
    16
    词法分析阶段就解决了
    LINAICAI
    LINAICAI
    Jul 6, 2017
    17
    编译型没影响,脚本型不好说,但你注释能有多少啊。
    shiny
    shiny
    PRO
    Jul 6, 2017 via Android
    18
    早年的 thinphp 会这么干,而且还会合并文件。目的大概是为了减少 IO 开销,但现代 PHP 这方面优化的已经足够好了。
    forelegance
    forelegance
    Jul 6, 2017
    19
    缩进和注释都影响性能,恩
    lurenw
    lurenw
    Jul 6, 2017
    20
    可能会增加一丢丢的时间,这一丢丢时间还只是 IO 的消耗,基本可以忽略不计,除非你有巨多巨多的注释
    jason2017
    jason2017
    Jul 6, 2017
    21
    不太了解 PHP,但是 java 编译成 class 文件的时候,注释都是被忽略的。
    ps:PHP 果然是最好的语言。
    rocksolid
    rocksolid
    Jul 6, 2017
    22
    除非你单个文件注释能到 m 级别
    qui9090
    qui9090
    Jul 6, 2017
    23
    公司让去掉注释可能不一定是为了性能考虑的
    jun4rui
    jun4rui
    Jul 6, 2017
    24
    20 年前我刚学变成书上就写编译器会把注释都过滤掉了。

    再换个思路,楼主你想想,注释要怎样才能产生写成 CPU 能执行的代码啊?注释根本就不会被 CPU 执行,就不能能占用 CPU 时间,自然也就不会降低运行速度,是不是?

    想通了就不会有疑问了。
    Microi
    Microi
    Jul 6, 2017❤️1
    25
    可以忽略不计吧,除非你把《冰与火之歌》或者《哈利波特》拷贝到注释里。
    Tairy
    Tairy
    OP
    Jul 6, 2017
    26
    @zbl430 我也觉得注释详细了好啊。
    @binjoo 估计会影响文件加载,运行不会影响。
    @forelegance 那 python 岂不是不活了。
    @rocksolid 整个文件都上不了 M,我就是用了 api-doc 把生成文档的东西写在注释里了。
    Chingim
    Chingim
    Jul 6, 2017 via Android
    27
    @jun4rui php 是解释型语言,不是编译型。
    jasontse
    jasontse
    Jul 6, 2017 via iPad
    28
    注释又不会编译成 opcode,有 opcache 在哪来的开销。
    Ouyangan
    Ouyangan
    Jul 6, 2017
    29
    这个问题很可爱 .
    lifeiselsewhere
    lifeiselsewhere
    Jul 6, 2017
    30
    不写注释也得找个靠谱的理由,即使是解释型语言,注释对性能的影响可以完全忽略。
    AMST
    AMST
    Jul 6, 2017
    31
    有影响,但是完全可以忽略不计..

    什么?!你的项目里有 80 万行注释?!
    ahkxhyl
    ahkxhyl
    Jul 6, 2017
    32
    看到你们在喷他 我就放心了~~
    learnshare
    learnshare
    Jul 6, 2017
    33
    应该有影响,毕竟文件体积变大了,读硬盘的时候多了一点时间
    cxbig
    cxbig
    Jul 6, 2017
    34
    没有影响。除非你的线上项目是不带任何缓存跑的
    damondev
    damondev
    Jul 6, 2017
    35
    会的不写注释的 app 感觉手机都轻了几十克🤣
    Mac
    Mac
    Jul 6, 2017
    36
    可能只是防止代码被直接打包出售,你们的生产环境是托管的?
    sagaxu
    sagaxu
    Jul 6, 2017 via Android
    37
    你写个 100G 的注释,看看会不会影响性能
    Deeer
    Deeer
    Jul 6, 2017
    38
    告诉我,你是写了多少注释才想到这个问题的?
    zhuangtongfa
    zhuangtongfa
    Jul 6, 2017
    39
    编译型只会影响编译性能,不会影响执行性能
    解释性多少会影响,比如你写个几 G 的注释试试,但是实际上影响不大,毕竟一本纯文本小说也就几 Kb,你注释再多也不会多到哪去,不写还影响可读性和维护性
    hinate
    hinate
    Jul 6, 2017
    40
    可能会影响项目的大小吧?
    anyforever
    anyforever
    Jul 6, 2017
    41
    你这项目是有多大啊。。
    还是从其他方面优化性能来的更快吧。
    litter123
    litter123
    Jul 6, 2017 via Android
    42
    @zhuangtongfa 纯文本小说几 K 的,你看的小说太小,唐三合集都 40-50MB 了,普通记事本打开都得卡半天
    zjsxwc
    zjsxwc
    Jul 6, 2017❤️1
    43
    我记得 Python 确实是注释越多越慢; PHP 有 opcode 之类的,而且像 symfony 这种会把代码“编译”压缩成新的 php 文件也没有这种问题。
    orderc
    orderc
    Jul 6, 2017
    44
    变量名也要简写用 a, ac, cd,减少磁盘占用空间,且不要有任何缩进。
    Tairy
    Tairy
    OP
    Jul 6, 2017
    45
    @lifeiselsewhere 不是找理由不写注释,只是今天突然听到这种操作,有点惊讶,才来问问的。
    @Mac 不是,都是普通的 web 代码,没啥值得保护的。
    @sagaxu 写一辈子代码估计也干不出 100 G 的注释了。
    @Deeer 只是今天突然听到这种操作,有点惊讶,才来问问的。
    @anyforever 我也觉得考虑这个就有点过度优化了。
    findmyself
    findmyself
    Jul 6, 2017
    46
    这个问题很刁钻
    vingz
    vingz
    Jul 6, 2017
    47
    代码先是给人看,然后才是运行的;注释必须有,不影响性能;编译器忽略注释
    y1shan
    y1shan
    Jul 6, 2017
    48
    我会用这个给自己找懒的理由
    pangliang
    pangliang
    Jul 6, 2017
    49
    要说会不会, 肯定会, 就算是跳过, 解释器解释的时候也需要 cpu 去 if 然后跳过啊
    但是, 这种影响 的 占比 相对其他因素, 根本不是一个量级....
    一个 php 请求用 ms 记时的话, 这种多了一点注释的影响 则是 us 级别
    cnZary
    cnZary
    Jul 6, 2017
    50
    php 的话
    讲道理至少在 i/o 上会有点区别吧
    visionsmile
    visionsmile
    Jul 6, 2017
    51
    C++里预处理之后注释都没有了,完全没有运行时开销!(逃
    est
    est
    Jul 6, 2017
    52
    @zjsxwc py 里的 # 注释根本就不在 .pyc 里存在。可能是用 了 """ """ 这种导致的。
    facetest
    facetest
    Jul 6, 2017 via Android
    53
    解释执行的话,把射雕英雄传贴进去会怎样?
    fen
    fen
    Jul 6, 2017
    54
    来局农药压压惊
    MrMario
    MrMario
    Jul 6, 2017 via iPhone
    55
    会,会影响网络传输,但我们去除注释主要是考虑到 js 混淆被逆,加大一些难度而已
    Tairy
    Tairy
    OP
    Jul 6, 2017
    56
    @fen 哈哈哈 大管家别闹
    cutoutsy
    cutoutsy
    Jul 6, 2017
    57
    去掉注释难道不是因为文件大小,生产环境一般都是去掉注释再压缩什么的
    manihome
    manihome
    Jul 6, 2017
    58
    难道代码不应该写在一行里?(偷笑.gif )
    run2
    run2
    Jul 6, 2017
    59
    和(说这话的)他们说话会影响代码性能的,真的!
    Tairy
    Tairy
    OP
    Jul 6, 2017
    60
    @cutoutsy PHP 代码也有必要这么做么?
    snnn
    snnn
    Jul 6, 2017 via Android
    61
    会啊。js 发布前都要做这个的
    sampeng
    sampeng
    Jul 6, 2017
    62
    有这样的同事,我想会影响我的性能。。。
    Sapp
    Sapp
    Jul 6, 2017
    63
    @honeycomb js 难道还有上线前不走一遍压缩的么?也就是那个时候占用一些 cpu 性能。我觉得 js 才是不需要担心这个问题的。
    honeycomb
    honeycomb
    Jul 6, 2017
    64
    @Sapp
    所以说几乎不可能会考虑源代码注释对性能的影响
    Sapp
    Sapp
    Jul 6, 2017
    65
    @litter123 我想起来以前上学看小说,唐家三少的根本看不起,别人是一天一毛几毛,看他一天能看一块多的
    jfcherng
    jfcherng
    Jul 6, 2017❤️1
    66
    某些注釋並不會被忽略,你甚至可以由代碼取得注釋。
    http://php.net/manual/en/reflectionclass.getdoccomment.php
    alwayshere
    alwayshere
    Jul 6, 2017❤️10
    67
    那要看你的服务器用的是水电、火电还是风电,一般来讲,用水电和火电的服务器编译器在编译 PHP 文件时性能彪悍,用风电的服务器编译 PHP 文件时性能没那么好,因为风电太缓而且柔,最好的还是核电,你把新华字典写进注释都没问题,所以一般抗 DDOS 的服务器都必须拉大亚湾核电专线
    dryyun
    dryyun
    Jul 6, 2017
    68
    也就是注释多于代码罢了,没什么大不了。
    sagaxu
    sagaxu
    Jul 6, 2017 via Android
    69
    @zjsxwc Python 注释只影响首次载入脚本时的性能,会影响性能的不是注释,是 docstring,会占用内存
    0915240
    0915240
    Jul 6, 2017
    70
    像 js html 之类的,所以一般 js 都有压缩,直接加载的肯定有的,但是当然这要你的注释量有多大啊。

    编译类型的如 java,则没影响(不影响运行)。
    BB9z
    BB9z
    Jul 6, 2017
    71
    贴主这标题误导人了吧,导致上面 60 多楼都在说性能……

    被要求的是 PHP 代码发布到生产环境去注释,会不会是团队在安全或产权保护(客户的服务器,不想给产品代码)上考虑的?

    另,应该是有工具去除的吧。
    Tairy
    Tairy
    OP
    Jul 6, 2017
    72
    @BB9z 不是误导啊,我听到的就是会影响性能,自家代码,自家服务器,不存在代码保护问题。
    BB9z
    BB9z
    Jul 6, 2017
    73
    @Tairy 那就无法理解了……
    sunnysign
    sunnysign
    Jul 6, 2017
    74
    @zbl430 注释太多就像鸟屎,最好的代码是通俗易懂,遵守规则。
    fangxing204
    fangxing204
    Jul 6, 2017 via Android
    75
    就算有,也是第一次加载文件时
    SuperMild
    SuperMild
    Jul 6, 2017
    76
    js 大多数都会有个 min 版本,这就很能说明问题了。
    johnnie502
    johnnie502
    Jul 6, 2017 via Android
    77
    @SuperMild js 主要考虑网络传输的开销,php 是服务器端运行,两码事
    fuyufjh
    fuyufjh
    Jul 6, 2017
    78
    即使是动态语言,影响也可以小到忽略。不信你写个“遇到 //就跳过直到换行”的程序,吞吐量应该在 GB/s 级别
    wclebb
    wclebb
    Jul 6, 2017 via iPhone
    79
    如果一定要去掉 zhi   yi
    anyele
    anyele
    Jul 6, 2017 via Android
    80
    太搞笑了
    luoluoluo
    luoluoluo
    Jul 6, 2017
    81
    楼主很棒,今日最佳!

    哈哈哈哈嘿嘿嘿嘿红红火火恍恍惚惚
    leitwolf
    leitwolf
    Jul 6, 2017
    82
    如果这都要考虑,那不用编程了。这种都能影响到性能的话,可以考虑更低级的语言,或者加点钱,升级一下硬件。
    loading
    loading
    Jul 6, 2017 via Android
    83
    脚本需要应该有点,但微乎其微。

    实在不行,做个 js 压缩那种工具,去注释。
    qhxin
    qhxin
    Jul 6, 2017
    84
    当年我们的程序在线上,框架的核心会是要根据 include 情况来合并到一个文件的,目的是为了减小读硬盘的次数,解析速度真的对整个请求响应时间是有影响的,严重的有几百毫秒的差距呢,当然现在上编译缓存基本不考虑这些了
    billlee
    billlee
    Jul 6, 2017
    85
    @qhxin #84 应该不是读硬盘次数吧,而是解释器的系统调用次数吧。硬盘应该是最开始读一遍后面就都在 page cache 里了。
    mingyun
    mingyun
    Jul 6, 2017
    86
    还有这种操作
    sindy
    sindy
    Jul 6, 2017 via iPhone
    87
    @Microi 一边阅读代码一边把小说看完了😂
    ricemo
    ricemo
    Jul 6, 2017
    89
    论大学《编译原理》课程重要性
    scriptB0y
    scriptB0y
    Jul 6, 2017
    90
    真的会影响性能,如果不去掉注释发布的时候性能会快一些
    SlipStupig
    SlipStupig
    Jul 6, 2017
    91
    @zjsxwc python 用文档符会有但是,注释符不会有的,因为 python 是 AST 生成代码的,不存在你说的这种问题
    ikaros
    ikaros
    Jul 6, 2017
    92
    影响写代码的效率 和 别人维护的效率
    akira
    akira
    Jul 7, 2017
    94
    过度优化了。 最大的可能影响的地方就是加载 php 文件时候的 io 损耗了,但是,如果你们到了需要计较这点损耗的时候,早就上编译缓存了啦
    Perry
    Perry
    Jul 7, 2017
    95
    只有 HTML JS CSS 才需要吧。。。
    popbones
    popbones
    Jul 7, 2017
    96
    应该是有影响,不过想要体验到这个估计除非你的源码很大很大,比如 1G 的源码,半个 G 的注释,或者从 5 寸盘读取源码估计能体验到
    Monstercat
    Monstercat
    Jul 7, 2017 via Android
    97
    理论上肯定会的 毕竟要多读一些文本 解释性语言就是解释的时候慢 编译性就是编译的时候。。然而几乎可以完全忽略不计。。
    keikeizhang
    keikeizhang
    Jul 7, 2017
    98
    忽略不计
    jedicxl
    jedicxl
    Jul 7, 2017 via iPhone
    99
    不会影响性能,会影响性功能
    loongwang
    loongwang
    Jul 7, 2017
    100
    编译原理没好好学吧
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1675 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 232ms · UTC 05:14 · PVG 13:14 · LAX 21:14 · JFK 00:14
    ♥ Do have faith in what you're doing.