深层次的挖掘---Java的一些看法JTEK
作者:err2356267 | 来源:互联网 | 2017-06-26 02:46
文章标题:深层次的挖掘---Java的一些看法JTEK。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
Java Chip 是 Optimized for Java 的 OOP、exption-handling、memory/garbage collection 的特制 chip,而 x86 (即传统 CPU) 并没有针对 C++ 所编译的 machine code 中的 new/exception-handling/memory allocation/late-binding 作硬件支持的最佳化动作。
拜 VLSI 之赐,memory allocation 以及 garabage collection 的动作可交由硬件来实作。在 modem 或电视中,用以数字模拟转换的 DSP (数字讯号处理) chip 而言,有所谓的 bit-reverse (作 FFT [快速傅立叶转换] 用的),倘若以一般 x86 来做这个动作,起码慢 10 倍以上。又如以往的浮点咚悖?日?颠算慢了 20 ~ 30 倍,但因有了浮点加速器的出现,浮点咚愕乃俣瓤?檎?颠算的 1.3 倍!
前述提到将 JVM 以 co-processor 形式实作的方式,可以参考 Nazomi Communica-tions [2] 公司的产品,他们推出一套 Java 加速芯片,这个代号为 JA108 的产品专门针对 2G/2.5G 或 3G 的手机使用。不需要加装额外的内存,只需将这 JA 208IC 植入原有系统设计中,便可大幅提升 Java 应用程序效率达 15 至 60 倍。
接着,笔者在 Pentium II 上咦? linux 进行以下实验:(原始码与machine code 的对照)
c++ 的 virtaul method calling:
┌──────────────────────────┐
│21: testx -> setx(20); // testx 是一个指针对象 │
│──────────────────────────│
│00401091 push 00000014 │
│00401093 mov eax,dword ptr [testx] │
│00401096 mov eax,dword ptr [eax] │
│00401098 mov ecx,dword ptr [testx] │
│0040109b call dword ptr [eax] │
└──────────────────────────┘
不算 argument 4 个指令
c 的一般 call:
┌───────────────────────────┐
│ good() │
│───────────────────────────│
│0040109f call @ILT+0(?good@@YAXH@Z) (00401000) │
│004010a4 add esp,00000004 │
└───────────────────────────┘
不算 argument 2 个指令
java 的 virtual call:
┌───────────────────────────┐
│my.getData(33); │
│───────────────────────────│
│ aload_2 │
│ bipush 33 │
│ invokevirtual #9 │
└───────────────────────────┘
不算 argument 2 个指令.
c++ 的 constructor:
┌────────────────────────────┐
│test *testx = new test(); │
│────────────────────────────│
│00401056 push 00000008 │
│00401058 call ??2@YAPAXI@Z (00401184) │
│0040105d add esp,00000004 │
│00401060 mov dword ptr [ebp-0c],eax │
│00401063 cmp dword ptr [ebp-0c],00000000 │
│00401067 je main+00000030 (0040107d) │
│0040106d mov ecx,dword ptr [ebp-0c] │
│00401070 call @ILT+15(??0test@@QAE@XZ) (0040100f)│
│00401075 mov dword ptr [testx],eax │
│00401078 jmp main+00000037 (00401084) │
│0040107d mov dword ptr [testx],00000000 │
└────────────────────────────┘
11 个指令
C++ destructor:
┌───────────────────────────┐
│delete testx; │
│───────────────────────────│
│004010a7 mov eax,dword ptr [testx] │
│004010aa mov dword ptr [ebp-10],eax │
│004010ad mov eax,dword ptr [ebp-10] │
│004010b0 mov dword ptr [ebp-14],eax │
│004010b3 mov eax,dword ptr [ebp-14] │
│004010b6 push eax │
│004010b7 call ??3@YAXPAX@Z (00401194) │
│004010bc add esp,00000004 │
└───────────────────────────┘
8 个指令
java 的 constructor:
┌───────────────────────────┐
│my my1 = new my(); │
│───────────────────────────│
│new #2 │
│invokenonvirtual #11 ()V> │
└───────────────────────────┘
2 个指令
由此可发现,对动态配置对象的操作而言,Java 一个 method call 只要一个machine code,但用 x86 相对需要 4 个,这是 Java 在指令集层面直接支持所致。我们显而易见 Java 的一个优势 —─ 目的码很小,可轻易置于资源困窘的家电设备中,再加上许多现成的 APIs 可进行呼叫、继承的使用,简洁的程序代码就可发挥强大的力量。'
推荐阅读
-
本文详细介绍了如何构建MongoDB的ReplSet复制集群,包括环境准备、配置文件设置以及初始化复制集群的具体步骤。 ...
[详细]
蜡笔小新 2024-12-04 09:07:26
-
CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ...
[详细]
蜡笔小新 2024-12-04 15:19:11
-
-
最近,在社交平台脉脉上,一条关于Python岗位的消息引起了广泛关注。本文将探讨Python岗位的实际价值,并深入解析阿里巴巴等大公司在面试Python开发者时常见的问题。 ...
[详细]
蜡笔小新 2024-12-04 16:31:13
-
本文详细介绍了PHP Xdebug的安装步骤及其在PHP开发中的重要作用。Xdebug作为一款强大的调试工具,不仅能够帮助开发者追踪代码执行过程,还能有效提升代码质量和系统性能。 ...
[详细]
蜡笔小新 2024-12-04 15:55:44
-
框图|中将_DA14531 学习笔记经验总结 ...
[详细]
蜡笔小新 2024-12-04 14:03:22
-
本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ...
[详细]
蜡笔小新 2024-12-04 13:05:33
-
本文探讨如何通过贪心算法有效地安排一系列活动,确保使用最少数量的会场来完成所有活动的调度。 ...
[详细]
蜡笔小新 2024-12-04 12:45:17
-
本文探讨了使用匈牙利算法解决二分图中的最大权匹配问题,并通过HDU1533题目实例进行详细解析。代码实现中包括了必要的数据结构定义、输入处理以及求解过程。 ...
[详细]
蜡笔小新 2024-12-04 12:36:20
-
Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ...
[详细]
蜡笔小新 2024-12-04 11:29:56
-
本文详细解析了 Mongolass 中 populate 方法的正确使用方式及其限制,特别是与 Mongoose 在使用上的差异。 ...
[详细]
蜡笔小新 2024-12-04 11:05:08
-
本文将介绍如何利用Postman工具执行基本的日志写入和数据管理操作。通过本教程,您将了解如何连接至Elasticsearch服务,创建索引,存储及检索数据。 ...
[详细]
蜡笔小新 2024-12-04 10:48:31
-
本文介绍两个实用的统计报表模板,并提供如何将这些静态模板转换为动态JSP页面的方法。同时,文中附上了详细的代码示例。 ...
[详细]
蜡笔小新 2024-12-04 10:26:05
-
随着智能手机市场的不断发展,处理器技术也在不断进步。近期,一些手机开始采用骁龙660AIE处理器,这引发了消费者对其与标准版骁龙660之间差异的好奇。本文将详细探讨这两款处理器的区别,帮助您更好地了解它们各自的特点。 ...
[详细]
蜡笔小新 2024-12-04 10:22:24
-
本文介绍了三款实用的Chrome插件:Gooreplacer用于加速访问依赖特定外部接口的网站;HTTP Request Blocker帮助过滤无法加载的图片请求;Browse Manager则能有效阻止恼人的弹出广告。通过合理配置这些工具,可以显著提升上网体验。 ...
[详细]
蜡笔小新 2024-12-04 10:18:55
-
题目描述:给定一个(n+1)×(n+1)的方格,其中包含一个(n-1)×(n-1)的空洞。使用1×2的砖块进行铺设,求解不同的铺设方案总数。 ...
[详细]
蜡笔小新 2024-12-04 09:12:39
-
err2356267
这个家伙很懒,什么也没留下!