java 调用c效率高_java通过JNI调用C语言写的函数,能提高运行效率吗?
C语言比Java快早就是公认的事实了。而Java可以通过JNI调用C语言写的库很多人也都知道。
但通过JNI调用C语言写的函数能提高效率吗?一直以来我都认为 是的 。昨晚心血来潮做了个测试,本意是想看看传说中强大的C语言在速度上到底有多强大,结果让我发现了 通过JNI调有C语言并不能提高效率 。不知道这样的结论有没有错,先说一下我测试的过程吧:
第一个测试:用java循环1亿次System.out.printf()
耗时:21 分 34.8 秒
第二个测试:用C语言循环1亿次printf()
耗时:6 分 12.6 秒
刚做完以上两个测试,就深刻体会到了C语言的效率。高兴了十几秒,我就想也许是java的 System.out.printf 和C语言的 printf 有较大区别造成的。于是做了第三个测试。
第三个测试:通过JNI调用C语言的printf(),同样循环1亿次输出
1.
2.
耗时:20 分 23.3 秒(这是第二天的测试的)
使用时间跟直接用java的 System.out.printf 差不多。本人不知道每次调用 native 方法会不会有额外的耗时(先给个不确定的定论:会)也就是说第三个测试之所以不会加速,是因为调用 native 方法时损耗了其它时间,还不能确定 通过JNI调用C语言能不能提高运行效率。又做了第四个测试
第四个测试:通过JNI调用C语言里面的循环1亿次printf(),不明白我说什么的看代码
1.
2.
耗时:19 分 54.2 秒(跟 测试三 一样是第二天测试的)
出乎意料,第四个测试并没有像 测试二 那样,速度并不快。测试四没有像 测试三 那样调用了1亿次 native 方法,它只调用了一次 native 方法,即使调用 native 方法会有额外的耗时也就只有一次,调用完这次native方法后接下来就是C语言里面的1亿次循环了。但结果很明显,速度并没有提升。。。。。
四个测试的结果,
第一个最慢,但它是在电脑用了一整天后测试的。
第二个最快,是在测试一之后测试的,电脑使用情况没多大变化。
第三个比第一个稍快一点,是第二天一大早起来后测试的,电脑休息了一个晚上。
第四个比第三个又快一点,是在第三个测试后更改了部分代码后测试的(跟测试3前后相差大约30分钟)。
最终结论:java通过JNI调用C语言并不能提高效率。
(这个结论也许是错的,可能这种测试的方式本来就不对)
java 调用c效率高_java通过JNI调用C语言写的函数,能提高运行效率吗?相关推荐
- java jni调用dll文件_Java通过jni调用动态链接库
(1)JNI简介 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始,JNI标准成为java ...
- java调用可执行程序 开销_java – 进行JNI调用的定量开销是多少?
快速分析器测试产量: Java类: public class Main { private static native int zero(); private static int testNativ ...
- c java 开发效率高_Java 的开发效率究竟比 C++ 高在哪里?
如果选择C++,那C++ 的难度与JAVA 比,那应该不在一个层次.因为 C++ 作者及委员会想给你带来足够的抽象能力,让你可以抽象这个世界:给你足够的自由与控制硬件的能力,及零开销的高性能. 简单点 ...
- java jni dll路径_Java中Jni调用DLL文件试验
Java中Jni调用DLL文件试验 下面是小编整理的Java中Jni调用DLL文件试验内容,希望可以为您带来帮助!更多内容请关注应届毕业生考试网! 所有文件均在E:\路径下. 安装jdk1.6.0_0 ...
- php 开发 比 java 快_PHP 比 Java 的开发效率高在哪?
做了几年PHP,最近在转Java,已经用Java做了半个互联网项目的人强答一下. 个人认为,PHP开发效率高主要是因为弱类型特性和自带强力函数库的原因. Java有太多的条条框框,对于我这种刚学的人来 ...
- java调C接口_java通过jni调用C程序接口
打算写一个FbSetApp去操作framebuffer的设备文件,以便能够去设置FB的一些参数. 新建两个class FbParams.java: package org.trident.fbset; ...
- java读取字节效率最高_java中字节流读写和字符流读写怎么理解?哪个效率更高...
我们java中的io流分为两大类,字节流和字符流. 可是在具体使用的时候怎么视情况进行使用? 怎么使用更加有效率? 有两个例子,帮忙看看解释一下,用哪种比较有效率以及适用情况. 下面是用字符流进行读写 ...
- java cpu 占用率高_java实战CPU占用过高问题的排查及解决
最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top 2. ...
- java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...
条件:1.请求URL:http://ip:port/yypt/*.jsonRequest 2.接口采用http post协议.Content-Type为application/json 调用流程: 第 ...
最新文章
- Spread for Windows Forms高级主题(5)---数据处理
- 学生籍贯信息管理系统c语言,学生籍贯信息管理系统(c).doc
- Python+selenium 技术篇-浏览器后台运行
- Vue+Openlayers实现显示图片并分优先级多图层加载
- 万达与IBM联手发力公有云市场,为不让马云当首富王健林也是拼了
- java 8 lambda表达式中的异常处理
- Direct3D中设备丢失处理
- 奥的斯电梯tt服务器使用表_奥的斯电梯服务器TT使用说明1
- 匹配除中文和空格意外的正则写法
- camera (14)---智能手机双摄像头原理解析:RGB +Depth
- html漂亮的表格模板+背景_咨询amp;金融主题响应式网站着陆页模板
- POJ 1611 The Suspects(简单并查集)
- Beta阶段 - 博客链接合集
- STM32固件库包的下载与安装
- 拉钩网招聘信息爬虫项目
- 新型远程下载功能路由器NW762简介
- Java 网络编程:(七)UDP网络编程
- Django(静态文件和Django应用和分布式路由)
- React 模拟点击事件
- 高斯消去法与列主元消去法