Open ryouaki opened 5 years ago
所以按我的理解是,面向过程和面向对象只是思想,不存在两者之间比较效率和性能的情况,还是得拿出场景具体情况具体分析。
学习了
Java的性能损失有两个地方: 1.字节码不是最终可执行机器码,虽然有JIT但不是所有字节码都会被JIT 2.JVM内存模型本身的弊端,将太多数据存放到堆而不是栈 面向对象与面向过程之间的性能损失叫做抽象化损失这个概念是C++委员会提出来的,而且抽象化损失仅存在于运行时的多态,编译时的多态是不存在抽象化损失的。 C++委员会一直追求标准库的抽象化损失不能比直接用C实现差,实际上对于绝大部分程序员,他们编写的C代码性能和效率是远超C++的抽象化损失的 所以你会发现STL和Boost里面很多数据结构的性能甚至比你直接用C语言自己造轮子要好,除非你选错了数据结构
学习了
学习了 谢谢
学习了,学习了
学习了, 收获很大
C和C++的编译原理是一样的,不适合拿C和C++举例,java效率慢还有一个原因就是分配内存的问题,面向过程的语言大多都是自己分配内存,而面向对象的语言通常是自动帮你分配内存,这里可能就会导致分配内存不当,导致比面向过程的语言占用更多的内存,从而影响运行效率。
哥们,你又不给我科普,你还要恶心我一手,你是真的牛,理工科怎么有你这样的兄弟呢。
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年3月19日(星期天) 晚上10:07 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [Snailclimb/JavaGuide] 面向过程 :面向过程性能比面向对象高?? (#431)
C和C++的编译原理是一样的,不适合拿C和C++举例,java效率慢还有一个原因就是分配内存的问题,面向过程的语言大多都是自己分配内存,而面向对象的语言通常是自动帮你分配内存,这里可能就会导致分配内存不当,导致比面向过程的语言占用更多的内存,从而影响运行效率。 我是看出来了,你是完全不懂JVM,或者你只是背了一些错误过时的八股文。另外Java占用内存多也不是你说的原因。我没必要给你科普,想知道正确答案的话去看看HotSpot
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
我是看出来了,你是完全不懂JVM,或者你只是背了一些错误过时的八股文。 另外Java占用内存多也不是你说的原因。Java对象本身占用的空间就比C++大,不过Java的内存回收机制才是主要原因 没有任何人有义务去给你科普,给你科普那是情分,不给你科普那是本分,想知道正确答案的话去看看HotSpot
C和C++的编译原理是一样的,不适合拿C和C++举例,java效率慢还有一个原因就是分配内存的问题,面向过程的语言大多都是自己分配内存,而面向对象的语言通常是自动帮你分配内存,这里可能就会导致分配内存不当,导致比面向过程的语言占用更多的内存,从而影响运行效率。
哥们你装什么呢,内存回收机制谁不知道似的,原因这么多,就你内存回收机制是原因?博主都已经说过了gc,我说还有别的一些原因不行吗,就你能耐呗
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年3月19日(星期天) 晚上10:16 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [Snailclimb/JavaGuide] 面向过程 :面向过程性能比面向对象高?? (#431)
我是看出来了,你是完全不懂JVM,或者你只是背了一些错误过时的八股文。 另外Java占用内存多也不是你说的原因。Java对象本身占用的空间就比C++大,不过Java的内存回收机制才是主要原因 没有任何人有义务去给你科普,给你科普那是情分,不给你科普那是本分,想知道正确答案的话去看看HotSpot
C和C++的编译原理是一样的,不适合拿C和C++举例,java效率慢还有一个原因就是分配内存的问题,面向过程的语言大多都是自己分配内存,而面向对象的语言通常是自动帮你分配内存,这里可能就会导致分配内存不当,导致比面向过程的语言占用更多的内存,从而影响运行效率。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
就你这点知识量就别出来回复别人了,我都替你觉得丢脸。无知也就算了,还没教养,你是别人儿子吗?别人有义务给你科普?煞笔又不是我生的,我没必要教育它
牛的,你确实蛮有教养的。
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年3月30日(星期四) 晚上9:35 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [Snailclimb/JavaGuide] 面向过程 :面向过程性能比面向对象高?? (#431)
就你这点知识量就别出来回复别人了,我都替你觉得丢脸。无知也就算了,还没教养,你是别人儿子吗?别人有义务给你科普?煞笔又不是我生的,我没必要教育它
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
面向过程和面向对象这两个概念是语言层面的,真正比较性能的高低,我们应该去比较其底层运行机理(这里我们比较的指标是代码运行模式:全量编译?部分编译部分解释?全量解释?)是运行机理的不同才导致的其性能的差距。 换言之,如果你面向过程采用的是全量解释,而面向对象采用的是全量编译,那么在这种情况下,面向对象的性能还优于面向过程呢
面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。
----》》 这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。
而面向过程语言大多都是直接编译成机械码在电脑上执行,并且其它一些面向过程的脚本语言性能也并不一定比Java好。