网站首页 > java教程 正文
求一个完成中值滤波的纯JAVA代码。我手里正好有一个C++的中值滤波代码,想对比下两者究竟差距多大。
@圆胖肿
可否写一个JAVA程序来佐证下你的观点呢?
我这面的C++代码,对一张5184*3456的图片,做半径100像素的中值滤波操作,在我机器上是2.039833秒。Photoshop的“滤镜/杂色/中间值”功能花费大约4.13秒。刨除对Photoshop采用手工点击秒表造成的误差,我这个C++代码所花费的时间,大概也是PS的50%。
中值滤波效果如下:
然后我又在网上找了一个号称纯Java的图像处理软件ImageJ(ImageJ),使用其“Process/Filters/Median...”功能,Radius设定为100.0 pixels,处理相同的这张照片,结果花费了 09:04.79的时间(等得我不耐烦了),即544.79秒。并且,这个软件使用了700M内存,占据了我I7 8700K的所有CPU时间。
处理结果有图为证:
而我那个C++程序,只使用了170M内存,并且只占用了11%~12%的CPU时间(6核心12线程)。
可见,ImageJ这个典型的Java程序,有多慢:
时间: C++,2.039833秒;Java,544.79秒
CPU占用百分比:C++,11%~12%;Java,99.6%
内存:C++,170M;Java,707M
那么,大概计算下来,在这个中值滤波算法上,C++的速度是Java的2216倍。
(内存白菜价,就不计算内存的额外成本了)
当然,我不认为ImageJ就是纯Java里最快的图像处理软件。但由于我对Java不熟悉,也就不知道还有其他什么更好的软件或者代码。希望知道的人不惜赐教。
另外,本人从事在线教育多年,将自己的资料整合建了一个QQ群,有兴趣一起交流学习c/c++的小伙伴可以加群:5692,68376,里面有大神会给予解答,也会有许多的资源可以供大家学习分享,欢迎大家前来一起学习进步!
再次
@圆胖肿
网上说 Java 的性能已经达到甚至超过 C++,是真的吗? - 圆胖肿的回答 - 知乎
网上说 Java 的性能已经达到甚至超过 C++,是真的吗?
测试环境:
CPU:I7-8700K,速度 4.1GHz,6核心12线程。
内存:32G容量,3200MHz速度,双通道。
有人私下说我这个计算不公平,于是,我修改了代码,使得可以多线程计算单张图片。之前 的代码是多线程计算多张图片。再次更新测试结果:
时间: C++,0.49501174秒;Java,544.79秒
那么,大概计算下来,在这个中值滤波算法上,C++的速度是Java的1100倍。
?
转载自知乎:链接:https://www.zhihu.com/question/50137261/answer/611875494
- 上一篇: 我的世界伤害值怎么算 我的世界伤害值计算公式详解
- 下一篇: 可能是最全面的G1学习笔记(g1 x)
猜你喜欢
- 2024-10-28 Java程序员需要用到的接口自动化测试框架:TestNg的Test注解总结
- 2024-10-28 等了 5 年,iPhone 这个功能终于回归
- 2024-10-28 「JAVA基础探针技术」Java探针-Java Agent技术
- 2024-10-28 Java中9种常见的CMS GC问题分析与解决(一)
- 2024-10-28 5K字带你彻底了解JVM运行时内存(jvm运行时内存结构)
- 2024-10-28 最全面的G1学习笔记(g1 s)
- 2024-10-28 Java 程序该怎么优化?工具篇(java代码如何优化)
- 2024-10-28 Java 性能问题如何排查?教你几招快速定位的方法
- 2024-10-28 常见的Java性能问题,我来手把手教你定位!
- 2024-10-28 Java程序员必须清楚的7个性能指标
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)