通过计算100万以内素数的运行时间比较这5种语言的运行速度。

每种语言运行30次,取平均值。由于python和fortran的运行速度和Java和C++运行差距过大,python只计算了3次,Fortran运行了10次.

C++,Java,Python,Fortran 到底哪个更快 ?

C++ 的速度比 Java 2.1% :来自计算 100 万以内质数的实验数据对比

各种语言的语法要求不同,算法只能尽可能写的一致。

这两篇文里对前期的实验有更详细的解释。

CUDA统计了核函数的运行时间,和数据从GPU传回CPU的时间

比如第一组数据

CUDA核函数运行时间ms CUDA数据从GPU到CPU的时间ms
287 4190

用时287毫秒GPU就把100万以内的素数程序运行完了,又用了4190毫秒这些结果从GPU传回CPU。

CUDA核函数运行时间ms CUDA数据从GPU到CPU的时间ms c++(不显示中间过程ms) 显示过程ms java(不显示中间过程ms) 显示过程ms python(不显示中间过程ms) fortran(不显示中间过程ms) 显示过程ms
287 4190 967 58228 844 1624 4625593 100717 109126
172 4099 738 57315 549 1716 4492283 102039 109546
141 4173 736 56691 929 1833 5211503 101634 108775
161 4153 784 57116 862 1884 * 100651 122592
145 4097 768 56679 866 1801 * 101487 121870
154 4145 888 81498 922 1801 * 101261 121646
125 4152 713 79003 860 1792 * 101379 120226
138 4105 881 79574 833 1891 * 100606 110631
125 4167 962 79737 851 1806 * 106303 108145
172 4093 875 78760 916 1894 * 94476 108237
156 4101 729 78189 786 1807
172 4109 846 82891 735 1777
148 4040 860 79148 785 1745
141 4075 870 76569 878 1737
141 4088 788 79128 754 1770
174 4117 779 72847 828 1895
159 4122 731 74039 852 1766
125 4194 656 72004 919 1863
125 4122 835 76723 858 1979
156 4074 839 77570 857 1882
141 4177 840 70929 924 1747
149 4128 833 73277 952 1861
156 4100 900 73976 659 1765
141 4175 747 73794 783 1830
125 4092 795 73472 813 1764
125 4157 849 70584 769 1784
121 4067 832 72319 834 1740
125 4112 809 71475 892 1810
173 4082 834 72823 818 1808
158 4037 766 71847 834 1684
平均
151.033333 4118.1 815 72606.8333 832.066667 1801.86667 4776459.67 101055.3 114079.4
1 * 5.39615979 * 5.50915913 * 31625.2019 * 755.325977

CUDA   >   C++   >   Java    >   Fortran   >   Python

151       <   815    <   832     <   114079  <   4776459

1           <    5.40   <   5.5      <   755        <    31625

也就是对这道题来说CUDA的速度是C++的5.4倍,是Java的5.5倍 ,是Fortran的755倍,是Python 的31625倍。相比较Java和C++相当于节省了80%的时间,或者一台机器当5台用。

#include "book.h"
#include "cuda_runtime.h"
#include "cpu_bitmap.h"
#include<iostream>
#include <time.h>
using namespace std;
#define DIM 1000
/****************************************/
__device__ int julia(int x ,int y){
     int  j=2; 
     int i=x*DIM+y;
    int a=0;
        for(j=2; j <= (i/j); j++) {
            if(!(i%j)) {
                break; 
        if(j > (i/j)) {
         return 1;
        if(j <= (i/j)) {
         return 0;
 unsigned char *dev_bitmap;
 HANDLE_ERROR (cudaMalloc( (void**)&dev_bitmap,bitmap.image_size()));
 dim3 grid(DIM,DIM);
 cout<<(end1-start)*1000/CLOCKS_PER_SEC <<endl; 
 HANDLE_ERROR (cudaMemcpy (bitmap.get_ptr(),dev_bitmap,bitmap.image_size(),cudaMemcpyDeviceToHost ));
  end2=clock();
 cout<<(end2-end1)*1000/CLOCKS_PER_SEC <<endl;        
 bitmap.display_and_exit();
 HANDLE_ERROR (cudaFree(dev_bitmap));
                                    本文详细介绍C语言和Fortran语言的差异1. C++语言和Fortran语言的发展背景在程序设计语言的发展过程中,FORTRAN 语言被认为是科学计算的专用语言。后来推出的FORTRAN90 和FORTRAN 95 版本也不例外,它们虽然可以完全实现C++语言同样的功能,然而其软件开发环境和软件的集成性等方面都远不如C++ 语言。近年来,随着计算机软硬件技术的发展,数据结...
                                    通过使用原子添加操作来更新并行计算环境中的共享内存位置,开发人员可以确保他们的计算结果是准确和一致的,即使是在多个线程访问和更新相同的数据时。例如,设定变量 real(kind=RK), intent(inout) :: acc_wk(3,num_node,*)  星号(*)表示该维度的大小没有在声明中明确指定,实际大小将取决于传递给使用acc_wk的存储过程的实际参数的值,这里统计线程数。并行执行计算的目的是为了利用现代GPU上的数千个处理核心,与传统CPU上的串行执行相比,可以大大加快计算速度。
                                    欢迎关注Julia语言微信公众账号 julia_language今日我们来看一篇文献[1],是关于不同编程语言的运行速度对比。该文章的目标受众是年轻的经济学家(研究生,初级教员)或研究人员,尤其是正在找一门编程语言协助完成相关计算工作的人。编程语言包括:C++11,Fortran 2008,Java,Julia,Python,Matlab,Mathematica,R,并分别在Mac和windows...
                                    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
加速计算正在取代 CPU 计算,成为最佳计算做法。加速计算带来的层出不穷的突破性进展、对加速应用程序日益增长的需求、轻松编写加速计算的编程规范以及支持加速计算的硬件的不断改进,所有这一切都在推动计算方式必然会过渡到加速计算。无论是从出色的性能还是易用性来看,CUDA 计算平台均是加速计算的制胜法宝。CUDA 提供一种可扩展 C、C++PythonFortran 等语言的编码范式,能够在世界上性能超强劲的并行处理器 NV
                                    是的,由于c_f_pointer的限制,这是一个问题.正如您所发现的那样,内部c_f_pointer仅支持从索引1开始的边界.人们经常声明Fortran是一种单索引语言,但事实并非如此.一个索引只是默认值,Fortran长期支持声明程序员想要的任何起始绑定.因此,c_f_pointer强制您使用一个索引是向后退一步.但是使用Fortran 2003有一个修复:指针边界重新映射:arr (0:n-1...
                                    其实在C++ AMP之前已经有了两个异构编程框架:CUDA与OpenCL。CUDA(Compute Unified Device Architecture)是显卡厂商Nvidia于2007年退出的业界第一款异构并行编程框架。在Nvidia的大力支持下,CUDA拥有良好的开发环境,丰富的函数库,优秀的性能。但是CUDA只能被用于在Nvidia的显卡上进行异构编程,有先天的局限性。
OpenCL(O...
                                    一、前言       这是我的第一篇博客,目的是记录在研究生阶段进行的多线程并行计算,主要用到的是VS2013与CUDA8.0,前者安装比较方便,后者配置起来有些麻烦,会遇到一些小问题导致无法进行Debug。希望我所分享的经验能够让我牢记其用法以及给对这方面有兴趣的人一些启发。二、CUDA8.0的安装及配置(1)首先请去点击打开链接下载CUDA8.0,选择合适版本。特别注意的network与loc...
                                    关注+星标公众号,不错过精彩内容来源| CSDN原文链接:https://nibblestew.blogspot.com/2021/02/why-most-programming-lan...