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语言写的函数,能提高运行效率吗?相关推荐

  1. java jni调用dll文件_Java通过jni调用动态链接库

    (1)JNI简介 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始,JNI标准成为java ...

  2. java调用可执行程序 开销_java – 进行JNI调用的定量开销是多少?

    快速分析器测试产量: Java类: public class Main { private static native int zero(); private static int testNativ ...

  3. c java 开发效率高_Java 的开发效率究竟比 C++ 高在哪里?

    如果选择C++,那C++ 的难度与JAVA 比,那应该不在一个层次.因为 C++ 作者及委员会想给你带来足够的抽象能力,让你可以抽象这个世界:给你足够的自由与控制硬件的能力,及零开销的高性能. 简单点 ...

  4. java jni dll路径_Java中Jni调用DLL文件试验

    Java中Jni调用DLL文件试验 下面是小编整理的Java中Jni调用DLL文件试验内容,希望可以为您带来帮助!更多内容请关注应届毕业生考试网! 所有文件均在E:\路径下. 安装jdk1.6.0_0 ...

  5. php 开发 比 java 快_PHP 比 Java 的开发效率高在哪?

    做了几年PHP,最近在转Java,已经用Java做了半个互联网项目的人强答一下. 个人认为,PHP开发效率高主要是因为弱类型特性和自带强力函数库的原因. Java有太多的条条框框,对于我这种刚学的人来 ...

  6. java调C接口_java通过jni调用C程序接口

    打算写一个FbSetApp去操作framebuffer的设备文件,以便能够去设置FB的一些参数. 新建两个class FbParams.java: package org.trident.fbset; ...

  7. java读取字节效率最高_java中字节流读写和字符流读写怎么理解?哪个效率更高...

    我们java中的io流分为两大类,字节流和字符流. 可是在具体使用的时候怎么视情况进行使用? 怎么使用更加有效率? 有两个例子,帮忙看看解释一下,用哪种比较有效率以及适用情况. 下面是用字符流进行读写 ...

  8. java cpu 占用率高_java实战CPU占用过高问题的排查及解决

    最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top 2. ...

  9. java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...

    条件:1.请求URL:http://ip:port/yypt/*.jsonRequest 2.接口采用http post协议.Content-Type为application/json 调用流程: 第 ...

最新文章

  1. Spread for Windows Forms高级主题(5)---数据处理
  2. 学生籍贯信息管理系统c语言,学生籍贯信息管理系统(c).doc
  3. Python+selenium 技术篇-浏览器后台运行
  4. Vue+Openlayers实现显示图片并分优先级多图层加载
  5. 万达与IBM联手发力公有云市场,为不让马云当首富王健林也是拼了
  6. java 8 lambda表达式中的异常处理
  7. Direct3D中设备丢失处理
  8. 奥的斯电梯tt服务器使用表_奥的斯电梯服务器TT使用说明1
  9. 匹配除中文和空格意外的正则写法
  10. camera (14)---智能手机双摄像头原理解析:RGB +Depth
  11. html漂亮的表格模板+背景_咨询amp;金融主题响应式网站着陆页模板
  12. POJ 1611 The Suspects(简单并查集)
  13. Beta阶段 - 博客链接合集
  14. STM32固件库包的下载与安装
  15. 拉钩网招聘信息爬虫项目
  16. 新型远程下载功能路由器NW762简介
  17. Java 网络编程:(七)UDP网络编程
  18. Django(静态文件和Django应用和分布式路由)
  19. React 模拟点击事件
  20. 高斯消去法与列主元消去法

热门文章

  1. 再来一个小游戏——原生js逐句解释开发简易版别踩白块,附源码
  2. 电机控制----FOC框架讲解
  3. 【数分书单】分析思维《一本小小的蓝色逻辑书》第五章小结
  4. Agora Flat 开源教室一周年总结
  5. x光肺部分割数据集_LIDC-IDRI肺结节Dicom数据集解析与总结
  6. 【PTA】约会成功了吗?
  7. 树莓派读取usb摄像头
  8. Java NIO全面详解(看这篇就够了)
  9. wincc中c语言编写延时,wincc 延时C脚本
  10. 数字图像处理知识点梳理——第二章 数字图像基础