C++,Java,Python,Fortran到底哪个更快?
在《C++的速度比Java快2.1%:来自计算100万以内质数的实验数据对比》这篇文中比较了C++和Java的速度,现在接着用同样的办法通过算1000000以内的质数来比较python和fortran的速度。
Python代码
import time
import datetime
t =time.time()
#print(int(round(t * 1000)))
i=2
j=2
for i inrange(2,1000000):
for j in range(2,(int(i/j)+2) ):
#print(i,"*",j,(int(i/j)+1) )
if(i%j==0):
#print(i,j," **")
break
# if(j >int (i/j)):
#print(i)
t1 =time.time()
print(int(round(t1 * 1000))-int(round(t * 1000)) ,"********* " )
#########################################
!!!!!!!!!!!!!!!!!!!!!!!!!
fortran代码
program main
implicit none
integer::i,j
Real :: r1 = 0.0
Real :: r2 = 0.0
Real :: r3 = 0.0
Real :: r4 = 0.0
Real :: ra1 = 0.0
Real :: ra2 = 0.0
Real :: ra3 = 0.0
Real :: ra4 = 0.0
character(8)::date
character(10)::time
character(5)::zone
integer,dimension(8)::values
character(8)::datea
character(10)::timea
character(5)::zonea
integer,dimension(8)::valuesa
!using keywordarguments
calldate_and_time(date,time,zone,values)
calldate_and_time(DATE=date,ZONE=zone)
calldate_and_time(TIME=time)
calldate_and_time(VALUES=values)
print '(a,2x,a,2x,a)',date,time,zone
print '(8i5))',values
outer: do i=2,1000000
inner:do j=2, i/j
!print "(3i5)", i/j ,i,j
if( j*(i/j)==i)then
exit inner
end if
end do inner
if(j > (i/j)) then
print "(3i10)",i
endif
end do outer
calldate_and_time(datea,timea,zonea,valuesa)
calldate_and_time(DATE=datea,ZONE=zonea)
calldate_and_time(TIME=timea)
calldate_and_time(VALUES=valuesa)
Read(time(1:2) , * ) r1
Read( time(3:4) , * ) r2
Read( time(5:6) , * ) r3
Read( time(8:10) , * ) r4
Read( timea(1:2) , * ) ra1
Read( timea(3:4) , * ) ra2
Read( timea(5:6) , * ) ra3
Read( timea(8:10) , * ) ra4
print '(a,2x,a,2x,a)',datea,timea,zonea
!print '(8i5)',valuesa
print '(f11.3)', (ra1*60*60*1000+ra2*60*1000+ra3*1000+ra4 )-(r1*60*60*1000+ r2*60*1000+r3*1000+r4)
! print'(f11.3)', ra1,ra2,ra3,ra4
end program
运算过程基本是一样的,因为python的冒号后面必须有东西所以把# if(j >int (i/j)):
#print(i) 这两句话都注释掉了,实际上python的程序比其他的程序还少了一步,fortran的时间计算因为不能直接的得到ms的时间还要转化一下,这一步慢了一点。
c++(不显示中间过程ms) | 显示过程ms | java(不显示中间过程ms) | 显示过程ms | python(不显示中间过程ms) | fortran(不显示中间过程ms) | 显示过程ms |
967 | 58228 | 844 | 1624 | 4625593 | 100717 | 109126 |
738 | 57315 | 549 | 1716 | 4492283 | 102039 | 109546 |
736 | 56691 | 929 | 1833 | 5211503 | 101634 | 108775 |
784 | 57116 | 862 | 1884 | * | 100651 | 122592 |
768 | 56679 | 866 | 1801 | * | 101487 | 121870 |
888 | 81498 | 922 | 1801 | * | 101261 | 121646 |
713 | 79003 | 860 | 1792 | * | 101379 | 120226 |
881 | 79574 | 833 | 1891 | * | 100606 | 110631 |
962 | 79737 | 851 | 1806 | * | 106303 | 108145 |
875 | 78760 | 916 | 1894 | * | 94476 | 108237 |
729 | 78189 | 786 | 1807 | |||
846 | 82891 | 735 | 1777 | |||
860 | 79148 | 785 | 1745 | |||
870 | 76569 | 878 | 1737 | |||
788 | 79128 | 754 | 1770 | |||
779 | 72847 | 828 | 1895 | |||
731 | 74039 | 852 | 1766 | |||
656 | 72004 | 919 | 1863 | |||
835 | 76723 | 858 | 1979 | |||
839 | 77570 | 857 | 1882 | |||
840 | 70929 | 924 | 1747 | |||
833 | 73277 | 952 | 1861 | |||
900 | 73976 | 659 | 1765 | |||
747 | 73794 | 783 | 1830 | |||
795 | 73472 | 813 | 1764 | |||
849 | 70584 | 769 | 1784 | |||
832 | 72319 | 834 | 1740 | |||
809 | 71475 | 892 | 1810 | |||
834 | 72823 | 818 | 1808 | |||
766 | 71847 | 834 | 1684 | |||
平均 | ||||||
815 | 72606.833 | 832.06667 | 1801.8667 | 4776459.7 | 101055.3 | 114079.4 |
因为速度差距过于悬殊fortran只算了10次,python算了3次,python也没有测量控制台该显示所有中间过程的时间
得到数据在控制台不显示中间过程的情况下
C++ java fortran python
815 832 101055 4776459
1 1.02 123 5860
也就是C++的计算速度是java的1.02倍,是fortran的123倍,是python的5860倍
控制台显示中间过程的情况的速度比较
Java c++ fortran python
1801 72606 114079 4776459
1 40 63 2652
Java控制台显示速度是c++的40倍,是fortran的63倍,至少是python的2652倍
C++,Java,Python,Fortran到底哪个更快?相关推荐
- CUDA,C++,Java,Python,Fortran运行速度比较
通过计算100万以内素数的运行时间比较这5种语言的运行速度. 每种语言运行30次,取平均值.由于python和fortran的运行速度和Java和C++运行差距过大,python只计算了3次,Fort ...
- 转载:JAVA获取时间戳,哪个更快
转载:http://hi.baidu.com/suofang/item/96629a060a44c119eafe38cc 目前获取毫秒值大概有下面三种方法 Java代码 //方法 一 Sys ...
- JAVA获取时间戳,哪个更快
目前获取毫秒值大概有下面三种方法 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); ...
- 64位和32位有什么区别?到底哪个更快?——硬核科普
原文链接:联想商用服务----64位和32位有什么区别?到底哪个更快?--硬核科普 32位和64位到底指什么? 下载 Windows 操作系统,会区分 X 64 和 X 86 版本(一般 X 86 是 ...
- java和php哪个运行更快,java和php哪个入门快?-php教程
跟着互联网的高速倒退,愈来愈多的人开端抉择处置较量争论机行业,而想要处置相干工作的话,理解相干编程言语也是必备的一项技艺.可是有不少冤家正在抉择要学习的编程言语时就被难到了,想晓得哪一种言语入门更快, ...
- 用 PyPy 让你的 Python 代码运行得更快!
Python是开发人员中最常用的编程语言之一,但它有一定的局限性.例如,对于某些应用程序而言,它的运行速度可能比其它语言低100倍.这就是为什么当Python的运行速度成为用户瓶颈后,许多公司会用另一 ...
- while (true) 和 for (;;) 到底哪个更快?
作者 | RednaxelaFX 来源 | https://zhihu.com/question/52311366/answer/130090347 在JDK8u的jdk项目下做个很粗略的搜索: my ...
- python分析excel数据-对照Excel使用Python进行数据分析,更快掌握
Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...
- 有了 for (;;) 为什么还需要 while (true) ? 到底哪个更快?
今日推荐 这 9 个 Java 开源项目 yyds,你知道几个?阿里技术专家推荐的20本书,免费送!K8S 部署 SpringBoot 项目(一篇够用)妙用Java 8中的 Function接口 消灭 ...
最新文章
- 内江将被打造成四川物联网西部副中心
- Unity 游戏开发技巧集锦之创建自发光材质
- JDBC PreparedStatement 实现原理【推荐阅读】
- python中assert_在Python中带有示例的assert关键字
- 52个有效方法(1) - 了解Objective-C语言的起源
- 《java学习二》jvm性能优化-----认识jvm
- 19、SPI 和 SST25VF016B
- mysql表名命名规范_数据库表名的命名规范
- MPUSH消息推送服务器搭建,MPUSH消息推送服務器搭建
- 第十章--聚类分析 第5组 小组作业
- 控制系统matlab计算及仿真,控制系统MATLAB计算及仿真实训
- vue 一个公式 编辑器 组件
- Android AndroidManifest.xml文件权限出现“Permission is only granted to system apps”的解决办法
- 大学计算机课桌面弄毛玻璃,高校换上新课桌,同学表示“世界观被颠覆”,网友:黑科技的诞生...
- 国家计算机职业技能鉴定4级考试内容大全
- .gitignore文件 —— git忽略文件
- 计算机等级考试二级ppt,高校计算机等级考试二级C.ppt
- 在Anaconda3下安装tensorflow-gpu库的经验之谈
- 物流配送系统源码,货物运送行进轨迹“一清二楚”
- 学习MySQL必须了解的13个关键字,你get了吗?