哎,不得不说最近见得键盘侠客太多了,做程序员没两天总是喜欢上嘴唇触天,下嘴唇碰地的吹。

自己分明都没用过几门语言,就对各门语言评头论足说三道四,这么语言多好那门语言有多烂。

可能是随着时间也变得没那么浮躁,这换我刚毕业时候我估计我难免也加入其中与其争论一番,工作这么些年了内心平静了不少。

再听那些毛头小子们评头论足的我也就是微微一笑就算了。

但是,突然也起了兴趣,各门语言的效率究竟能差多少,以前还真没做过相关的试验。真理不是听说、好像、估计就能出结果的。

没有依据的话那叫信口雌黄。说出一个结果时候你得有足够的依据。

就拿我最熟悉的几门语言坐下对比,分别为C,C#,JAVA,Python。

c,早在学生阶段就天天再用,学习数据结构时候不知道写了多少c代码。

c#,是我现在每天在用的语言,使用c#严谨的语法+强大IDE,写代码比为爱鼓掌还爽。

java,目前写过许多android程序,网站也做过一些。

Python,目前为止并未在工作中实际使用过,但用python写过不少爬虫。

相对来说以上四门语言我还都很熟悉,不存在新手不懂这门语言,发挥不出性能这种事了吧?

然后报一下机器配置,配置算是中等偏上吧,但是写代码足够了。

说一下测试逻辑

一个求水仙花数的算法,然后执行一万次。测试每门语言的执行时间。

为了结果可信度高,算法纯手写,不采用任何库,第三方包。

首先测试老大哥c语言。

不得不说你大爷还是你大爷,别看你大爷年龄大,依然宝刀未老,做起事情来依然长枪直入。

测试结果仅为 1009ms。速度不错,但其他语言还没有执行,也不好说c究竟有多牛B。

#include<stdio.h>
#include "stdafx.h"#include<time.h>   //用到clock()函数
void NarcissisticNumber() {int ge, shi, bai;for (int n = 100; n < 100000; n++) {ge = n % 10;shi = (n - ge) / 10 % 10;bai = (int)(n / 100);if (ge * ge * ge + shi * shi * shi + bai * bai * bai == n) {//printf("%d", n);
        }}}int main()
{int begintime, endtime;int a[1002];begintime = clock();int i = 100;    for (i = 1; i <= 10000; i++) {NarcissisticNumber();}endtime = clock();    printf("\n\nRunning Time:%dms\n", endtime - begintime);getchar();return 0;
}

与其说c是你大爷,C#可能是个小家碧玉,小妞不错,要脸蛋有脸蛋要身材有身材,听话懂事。就是微软这个家长家教太严不让出门。

现在他爹似乎意识到了这一点,鼓励c#出去闯闯,争取变成大家闺秀,好了到我们的小家碧玉大显身手的时候了,测试结果15130比他大爷慢了十倍多。

        static void Main(string[] args){Stopwatch watch = new Stopwatch();Console.WriteLine("开始计时");watch.Start();for (int i = 1; i < 10000; i++){NarcissisticNumber();}watch.Stop();string time = watch.ElapsedMilliseconds.ToString();Console.WriteLine($"C#执行时间:{time}");Console.ReadKey();}public static void NarcissisticNumber(){int ge, shi, bai;for (int n = 100; n < 100000; n++){ge = n % 10;shi = (n - ge) / 10 % 10;bai = (int)(n / 100);if (ge * ge * ge + shi * shi * shi + bai * bai * bai == n){//Console.WriteLine(n.ToString());
                }}}

到我们的性感少妇了,java从出道以来,追求者无数。至今不知道多少企业临幸过java,多少门技术厚着脸皮,穷追不舍得追求着java这小niang们。俗话说的好,

美女身后苍蝇多,java身后的苍蝇简直多的数不胜数。但是java这小妖精玩得转,身后的苍蝇们(库)不乏优秀能干者。

好了我们看看少妇的办事能力9372ms,这个结果真的有够惊讶。本以为在微软的平台上,java的执行效率不会高过c#(白白浪费了我临幸c#这么多年)。结果居然

高出了一大截。

    public static void main(String args[]) {System.out.println("开始计算");long startTime = System.currentTimeMillis();for (int i = 1; i < 10000; i++) {NarcissisticNumber();}long endTime = System.currentTimeMillis();System.out.println("程序运行时间:" + (endTime - startTime) );}public static void NarcissisticNumber() {int ge, shi, bai;for (int n = 100; n < 100000; n++) {ge = n % 10;shi = (n - ge) / 10 % 10;bai = (int) (n / 100);if (ge * ge * ge + shi * shi * shi + bai * bai * bai == n) {//System.out.println(String.valueOf(n));
            }}}

接下来到我们的小妖精了,python真的我只能用小妖精来形容他。虽然他出生的很早,但是一直默默无闻。就是这些年突然爆发了,简直无所不能。

游戏,网站,应用程序,爬虫,AI。这小妖精就是用妖法迷住了大家,小妖精就是小妖精,活好不粘人,一切本着不主动、不拒绝、不负责的行事原则。你大爷(c)手艺牛逼,老年人唠叨(代码复杂)。

小家碧玉虽然好奈何教教太严,性感少妇苍蝇多。小妖精简直不要太简单。

好了,看看我们的小妖精究竟有多大本事。。。。

首先我跟大家解释下,其他语言进行了10000次水仙花,而python只进行1000次。是因为如果python要执行10000次几分钟都出不了结果,

我不敢相信这门语言真的差到这种程度,如果算法写的有问题,还请大家指教

python 1000次执行结果54404ms,完全没法跟以上语言相比。这个结果我真的不敢相信。。。。

import timedef NarcissisticNumber():ge = 0shi = 0bai = 0for n in range(100,100000):ge = n% 10shi = (n - ge) / 10 % 10bai = int(n / 100)if ge * ge * ge + shi * shi * shi + bai * bai * bai == n:continueprint("开始计时")
start = time.time()        for each in range(1000):NarcissisticNumber()end = time.time();print("Python运行时间:"+str((end - start)*1000))

最后强调下,以上所有debug模式。

好的,老铁们。这篇文章收货了太多黑跟质疑了。

首先我承认,有些问题牵考虑的。例如debug模式。

但是我无意黑C#,自打毕业以来每天都在敲c#,c#

对我的感情你们不了解,说我对比没有意义的。我也承认

的确没有意义,没门语言都有自己的长项,本次测试仅仅

为了测试,难道你能因为java执行的比c#快就不再用c#?

技术这个东西永远只有更高没有最高,明天我还会更新本篇帖子的续篇。

这篇帖子只有这位老兄的回复最为中肯。 @五星

续篇里我改进以下几个问题

1.不再使用debug,使用release模式。java直接编译成.class文件直接运行

2.防止编译时对代码优化,if 里面要搞点事情

3.多次测试

最后再强调本次测试仅为测试,甚至可以说是为了玩,无意黑某门语言。这几门语言每门语言我都喜欢。

技术讨论观点分歧再所难免,理性讨论,请勿出言不逊。言行代表素质,代码能力可以查,人的修养不能差。

我是擅长接受建议的,我也不抵触反对,但反对他人的同时你要拿出你自己的见解与方案,要不然与键盘侠何异?

转载于:https://www.cnblogs.com/abountme/p/10311654.html

这段代码,c 1秒,java 9秒,c# 14秒,而python。。。相关推荐

  1. python循环一段代码_Python循环语句代码详解:while、for、break

    导读:循环语句是指重复执行同一段代码块,通常用于遍历集合或者累加计算.Python中的循环语句有while语句.for语句. 01 while循环 循环语句是程序设计中常用的语句之一.任何编程语言都有 ...

  2. java字符下落,重力球,加速下落减速上弹,重力下落,这段代码是看到网上一个关...

    重力球,加速下落减速上弹,重力下落,这段代码是看到网上一个关 这段代码是看到网上一个关于碰壁球修改而成的,用到事件,画图,Timer类package Cheman;import javax.swing ...

  3. 怎么查看java的引用类_一段代码看 Java 引用类型

    Java 中的操作数(不知道叫什么,相对于 bytecode 而言,类似 CPU 的操作码和操作数)分为值类型和引用类型: 值类型就是直接存储最终数值的,如 char, int, float, dou ...

  4. 调用布尔变量java_关于java的参数的调用,还有布尔的理解,这有一段代码,我有些不太理解,希望能够帮我分析下,谢谢...

    第一段代码 public class CustomerBiz { String[] names=new String[30]; //创建学生姓名数组 //实现姓名的添加 public void add ...

  5. java中怎么判断一段代码时线程安全还是非线程安全_Java 中的多线程你只要看这一篇就够了...

    引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个 ...

  6. java面试题35 给定以下JAVA代码,这段代码运行后输出的结果是()

    java面试题35 给定以下JAVA代码,这段代码运行后输出的结果是() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  7. java怎么播放不了声音,java – 为什么这段代码不播放声音文件

    代码 import javax.sound.sampled.*; import java.io.*; public class Tester { static Thread th; public st ...

  8. Java中有关日期的操作,昨天晚上赴约,搞到12点多才回来,今天写这一小段代码都花了一段漫长的时间,哎。。...

    Java中有关日期的操作,昨天晚上赴约,搞到12点多才回来,今天写这一小段代码都花了一段漫长的时间,哎.. 代码奉上: /** * * @param date * @return which mont ...

  9. 在记事本上用java写一段代码,程序到底是如何跑起来的?

    首先我们在记事本上写一段代码,并把类型改成java文件 不知道大家有没有想过,当我们写下这样一段代码,计算机是如何来运行它的? 它的运行路径如下: 第一步:我们在记事本上写代码,它是一个.java文件 ...

  10. java控制台如何输入一段代码

    Java控制台该如何输入一段代码,后面要计算该代码中for循环的层数,因为代码中涉及空格和换行,粘贴代码串后无法执行后面的代码,已知处于输入状态,该怎么办,求助各位大佬!! while(scanner ...

最新文章

  1. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
  2. Learning Deep Structured Semantic Models for Web Search using Clickthrough Data (DSSM)
  3. Stm 32 IAP 在线 升级IAP 的 操作
  4. ServiceMesh究竟解决什么问题?
  5. 把存储过程结果集SELECT INTO到临时表
  6. ftp 上传文件夹_命令行连接FTP服务器
  7. Encapsulate Collection(封装集合)
  8. 关键词热度分析工具_谷歌SEO推广排名的关键要素(一)利用谷歌关键词分析工具分析关键词...
  9. 对linux中多线程编程中pthread_join的理解
  10. 2020 大会员惊喜上线!大特权限时领取!
  11. 限制mysql资源使用率_MySQL--限制用户使用资源
  12. 体验SRCNN和FSRCNN两种图像超分网络应用
  13. suse 11添加阿里源
  14. sprint演示会议
  15. pythonturtle魔法阵_python turtle 库绘制简单魔法阵
  16. 手机开启自动调节亮度,到底是省电还是耗电?为何?
  17. Awesome Chrome 插件集锦
  18. 假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data seg
  19. 使用STM32C103C8T6的注意点
  20. c语言sqar是double,C语言怎么编写正弦波

热门文章

  1. python最难的地方_全国 41611 个景点,程序员用 Python 告诉你哪些地方最值得一游!...
  2. 开题报告里的基本内容写什么,预期效果又怎么写?
  3. 那些不起眼的流量大户在做什么?(转载)
  4. es 主要内存使用大户
  5. 智慧立法平台,以“智慧”赋能立法工作新格局
  6. 导出icloud照片到电脑_如何将Apple iCloud和iPhone联系人导出到Windows 10
  7. python alphashape_Python alphashape包_程序模块 - PyPI - Python中文网
  8. 【工利其器】必会工具之 Source Insight篇
  9. 用tomcat在本地部署一个web服务器
  10. matlab中周期延拓,如何周期延拓函数?