Java 面试题“变量名很长会不会影响执行效率”很难吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yidinghe

Java 面试题“变量名很长会不会影响执行效率”很难吗?

  •  
  •   yidinghe Sep 21, 2018 8881 views
    This topic created in 2775 days ago, the information mentioned may be changed or developed.
    40 replies    2021-01-14 09:59:43 +08:00
    Lateautumn
        1
    Lateautumn  
       Sep 21, 2018
    会吗,
    lz234561
        2
    lz234561  
       Sep 21, 2018
    不会
    hoythan
        3
    hoythan  
       Sep 21, 2018
    不会
    simonliu2018
        4
    simonliu2018  
       Sep 21, 2018
    那么问题来了,变量名很长很长会影响什么效率?
    earther01
        5
    earther01  
       Sep 21, 2018
    java 不会,那么问题来了,python 会影响吗
    Sanko
        6
    Sanko  
    &nbp;  Sep 21, 2018 via Android
    很长是有多长
    night98
        7
    night98  
       Sep 21, 2018 via Android
    得看有多长,哈哈
    inframe
        8
    inframe  
       Sep 21, 2018 via iPhone
    python 走字典,复杂度是 hash
    lht260
        9
    lht260  
       Sep 21, 2018
    到低有多长?
    qinxi
        10
    qinxi  
       Sep 21, 2018
    @simonliu2018 打字效率
    yidinghe
        11
    yidinghe  
    OP
       Sep 21, 2018
    @simonliu2018 影响打字效率啊
    amon
        12
    amon  
       Sep 21, 2018
    效率可以忽略不计,因为编译时都会转成其它字符。
    xflicker
        13
    xflicker  
       Sep 21, 2018
    不会,但是占地方啊
    simonliu2018
        14
    simonliu2018  
       Sep 21, 2018
    语言的规范有变量长度限制说明。
    shiyouming91
        15
    shiyouming91  
       Sep 21, 2018 via iPhone
    看虚拟机实现了...不过一般而言对类加载有微小的影响。执行的时候局部变量不会,编译的时候都换成几号变量的数字了。成员变量会微小地影响调用成员变量的方法第一次执行的时候的速度,不过靠谱的虚拟机应该会在这个时候翻译成地址偏移量,因此以后就不会影响了。无论如何等 jit 预热好了就完全不影响了
    felixlong
        16
    felixlong  
       Sep 21, 2018
    @earther01 你确定不会? 其实某些地方应该是会的。有人用 reflector 访问你的变量了呢?
    shiyouming91
        17
    shiyouming91  
       Sep 21, 2018 via iPhone
    楼上说的对,也会影响反射的速度
    dasuxd
        18
    dasuxd  
       Sep 21, 2018 via Android
    再小的时间也是时间,
    滑稽脸
    yidinghe
        19
    yidinghe  
    OP
       Sep 21, 2018
    @simonliu2018
    @shiyouming91
    @felixlong
    我这里指的是本地变量或参数啊,跟类名成员名方法名无关,编译的时候都抹掉了。
    zhenghuiy
        20
    zhenghuiy  
       Sep 21, 2018 via iPhone
    问题是这道题有什么意义么,开发的时候取名应该是在“能不能见名知意”中纠结,而不是变量名的长短吧。比较规范是参考《代码大全》变量名的取名方式,但书中写的都挺长。。日常开发应该比规范得短。(当然你要强行说考这个是为了考察对方对编译过程的理解 balabala。。是在下输了)
    yidinghe
        21
    yidinghe  
    OP
       Sep 21, 2018
    @zhenghuiy 就是考虚拟机原理,不是考代码的优雅性。
        22
    jason19659  
       Sep 21, 2018
    你反问他,那你们的代码不加密吗?
    yidinghe
        23
    yidinghe  
    OP
       Sep 21, 2018
    @jason19659 首先那叫混淆,其次 Java 的混淆不是针对代码而是针对字节码的。
    quickma
        24
    quickma  
       Sep 21, 2018
    问 JVM 没必要问这个题目,直接问.java->.class 干了什么事情
    LukeChien
        25
    LukeChien  
       Sep 21, 2018 via Android
    反射也不影响
    hanangellove
        26
    hanangellove  
       Sep 21, 2018
    java 的函数调用原理是啥? 也是方法名作为 key,去全局的 map 中找到函数实现的指针地址吗?
    hpeng
        28
    hpeng  
       Sep 21, 2018 via iPhone
    用 Java8 开启编译参数,代码里反射获取参数名应该会有影响的。不过看你问的问题,答题的人估计都不知道你想问什么。
    bumz
        29
    bumz  
       Sep 21, 2018
    完全不会

    考点:Java 是编译为字节码执行
    aa6563679
        30
    aa6563679  
       Sep 21, 2018 via iPhone
    成员变量或参数变量影响一丢丢
    局部变量一点都没有
    uleh
        31
    uleh  
       Sep 21, 2018
    变成字节码了还有啥变量名啊。。
    除非是反射用到。。
    kaedea
        32
    kaedea  
       Sep 21, 2018 via Android
    不会。问这个还不如问变量名最长能多长。
    yemenchun1
        33
    yemenchun1  
       Sep 21, 2018
    C 的话, C 语言连好头文件以后吗, 首先编译成汇编语言, 这里面应该是不会变变量名的, 而后汇编语言转换成二进制, 这里就没有变量名什么事儿了, 执行的时候就不会影响速度. 但是编译的时候大概可能会影响速度, 要看编译器的优化程度了, 据说 Intel 自己的编译器比较牛.
    xhystc
        34
    xhystc  
       Sep 21, 2018 via Android
    会,当通过反射访问参数名时,如果参数名长达几个 g 肯定会影响效率的
    zwh2698
        35
    zwh2698  
       Sep 21, 2018 via Android
    词法分析器的效率
    bobuick
        36
    bobuick  
       Sep 21, 2018
    语言有限制,说几个 G 的变量,是什么鬼
    maokabc
        37
    maokabc  
       Sep 22, 2018 via Android
    本地变量编译成 class 后都是 iload,istore,aload,astore 之类没影响,域变量这些还是有影响
    lengyihan
        38
    lengyihan  
       Sep 22, 2018 via Android
    会肯定会的,事物只要有变化,就肯定会产生影响。只是有些影响是可以忽略不计的。如果面试者是一个有着唯物辩证观的人,像我这样,就很为难了。题目不怎么好。
    darkcode
        39
    darkcode  
       Sep 23, 2018
    @qinxi
    @yidinghe
    他问的是执行效率
    jacklau
        40
    jacklau  
       Jan 14, 2021
    影响的是开发的效率(多敲 n 个子母),只是内存地址的代号,最终到执行阶段都是要舍弃的。
    About     Help     Advertise     Blog     API     FAQ     Solana     993 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 94ms UTC 19:22 PVG 03:22 LAX 12:22 JFK 15:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86