文档章节

C,D,Go,Rust,Nim 5语回文数大战!仅供娱乐参考!

捍卫机密
 捍卫机密
发布于 2015/09/25 01:29
字数 1115
阅读 1061
收藏 3

娱乐!娱乐!请不要诋毁任何语言!!!!20151030测试了Rust 1.4;20151102测试了nim0.12;20151214测试了Rust 1.5 GCC版;20160127测试Rust 1.6 MSVC;20160127 Nim 0.13;20160131在树莓派兼容的香蕉派m1上编译的go1.5测试;加了个D语言(C的代码就改了时间部分就移植了);20160307改用rust1.7(ms)重编译了;20160416rust1.8ms编译; 20160527Rust1.9MSVC编译;[20160712]Rust 1.10MSVC编译;20160829Nim改releas编译;20171123 rust改用release编译且换官方时间库release编译后执行速度惊人;

联想笔记本 inter i7,2.4GHz,16G,win10

C语言(应该是全C,vs2015编译)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
bool ishuiwen(int n) {
    int sn = 0;
    sn = n;
    int tn = 0;
    while (sn != 0) {
        tn = tn * 10 + sn % 10;
        sn = sn / 10;
    }
    if (tn == n)
        return true;
    return false;
}
int hw1() {
    int tx = 0;
    int x = 0;
    for (x = 0; x <= 10000000; x++) {
        if (ishuiwen(x) == true)
            tx ++;
    }
    return tx;
}

void runhw() {
    clock_t start, finish;
    double  duration;
    start = clock();
    int total = hw1();
    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    printf("total = %d,  %f seconds\n", total, duration);
}

1100毫秒+

---------------------------

DLang(在vs中用D插件编译的)

import std.stdio;
import std.datetime;

bool ishuiwen(int n) {
    int sn = 0;
    sn = n;
    int tn = 0;
    while (sn != 0) {
        tn = tn * 10 + sn % 10;
        sn = sn / 10;
    }
    if (tn == n)
        return true;
    return false;
}
int hw1() {
    int tx = 0;
    int x = 0;
    for (x = 0; x <= 10000000; ++x) {
        if (ishuiwen(x) == true)
            tx ++;
    }
    return tx;
}

int main(string[] argv)
{
    auto currentTime1 = Clock.currTime();
    auto all = hw1();
    auto currentTime2 = Clock.currTime();
    writeln("it is ", all, "have ", currentTime2 - currentTime1, " sec.");
    return 0;
}

764毫秒左右。D 2.07编译的

---------------------------

Go

func HW(num int) bool {
    var source int = num
    var tnum int = 0
    for num != 0 {
        tnum = tnum*10 + num%10
        num = num / 10
    }
    if tnum == source {
        //fmt.Println(source)
        return true
    }
    return false
}
func hw() {
    all := 10000000
    t1 := time.Now()
    total := 0
    for n := 0; n <= all; n++ {
        if HW(n) {
            total++
        }
    }
    t2 := time.Now()
    fmt.Println(total)
    fmt.Println(t2.Sub(t1))
}

Go 1.5.1    200毫秒+;

Go 1.5.2    209毫秒+;

香蕉派m1上,Go1.5,2.5秒左右;

----------------

Rust

use std::time::SystemTime;

fn main() {
    hw21();
}

fn hw21(){
    let local1 = SystemTime::now();
    hw2();
    let local2 = SystemTime::now();
    let rtime = local2.duration_since(local1);
    println!("{:?}", rtime);
}

fn hw2(){
    let mut tx:i32 = 0;
    for x in 0..10000000 {
        if hw(x) == true {
            tx=tx+1;
        }
    }
    println!("--{:?}--", tx);
}

fn hw(n: i32) -> bool {
    let mut sn:i32 = n;
    let mut tn:i32 = 0;
    while sn != 0 {
        tn = tn*10 + sn%10;
        sn = sn/10;
    }
    if tn == n {
        return true;
    }
    return false;
}

Rust 1.3  900毫秒+

Rust 1.4 同一套代码,用时飙到了1100毫以上。最高的1500多毫秒!

Rust 1.5 GCC 同一套代码,用时927毫秒! MSVC版的 Rust 1.5 没有编译成功!

Rust 1.6 MSVC 959 毫秒+,数次平均970毫秒左右

Rust 1.7 MSVC版本 967毫秒,不是特别稳定,96X毫秒-1秒100毫秒不等。【20160307】

Rust 1.8 MSVC版本 95X 毫秒,比较稳定,95X毫秒-96X毫秒不等。【20160416】每次不要覆盖安装rust新版,卸载以前的安装,不然编译很容易出错!

Rust1.9 MSVC 1秒多,比1.8退步了。但是这不代表Rust退步了。请诸位各自明辨!

Rust1.10 MSVC 1秒多。根据某个评论用户的测试其运行大约都是220毫秒左右,所以最后执行效率可能因为各种因素而不通。

20171123 这次使用了 cargo build --release 编译,还升级了时间计算,用的rust自带的原生std::time。120毫秒上下。果然不负rust的称号!

PS E:\rustprojects\rusttest> ./rust_test
--10999--
Duration { secs: 1, nanos: 78146300 }
// 上面是以前的
// 下面是带有release编译的,基本120-130毫秒之间,但是用的硬件稍有改动:i5 4460 3.2g 4核+8G+win10
F:\work\rustp\rustp02>target\release\rustp02.exe
--10999--
Ok(Duration { secs: 0, nanos: 120095200 })

-----------------

Nim 0.11.2

import strutils, times

proc ishuiwen(n : int): bool =
  var sn : int
  sn = n
  var tn : int
  tn = 0
  while sn != 0 :
    tn = tn * 10 + sn mod 10
    sn = sn div 10
  if tn == n :
    return true
  return false

proc hw1() : int =
  var tx:int = 0
  for x in 0..10000000 :
    if ishuiwen(x) == true :
      tx=tx+1
  return tx

var t0 = times.cpuTime()
var total : int = hw1()
var t1 = times.cpuTime()
echo("Nim HW all ok ", total, " . use : ", t1 - t0)

4000毫秒+

20151102更新了Nim 0.12版,测试回文数计算速度有提高,2.8-2.9秒;

20160127  Nim 0.13  2.7秒多点;

20160829,在某个网友提示下加入-d:release编译,性能提升。200多毫秒。感谢那位提示的网友。

-----------------------------------------------------------

我可不是想说谁好谁坏!!

我不是某语言拥护者。反正需要不断进步!

© 著作权归作者所有

捍卫机密
粉丝 5
博文 132
码字总数 50548
作品 0
成都
程序员
私信 提问
加载中

评论(14)

捍卫机密
捍卫机密 博主

引用来自“路中鸟”的评论

我知道你为什么是2秒多了, 因为编译的debug版本, 我上面debug版本也是2秒多。
Nim HW all ok 10999 . use : 2.329
用语言debug版本来秀比拼也是醉了, 其它语言可能也是用的debug编译的吧, 也是服了你。
可能你说的是,我的确没注意这个问题。多谢指教,我空了再试试。谢谢。
路中鸟
路中鸟
我知道你为什么是2秒多了, 因为编译的debug版本, 我上面debug版本也是2秒多。
Nim HW all ok 10999 . use : 2.329
用语言debug版本来秀比拼也是醉了, 其它语言可能也是用的debug编译的吧, 也是服了你。
路中鸟
路中鸟
虽然不知道你是怎么搞出来的, 同样i7 win10.
```bash
#nim 0.14.2
Nim HW all ok 10999 . use : 0.098
```
捍卫机密
捍卫机密 博主

引用来自“dongweigogo”的评论

无法理解你的结果怎么来的
Rust 1.9 均为 220+ 毫秒
C:\Users\1\Desktop\myrust>main.exe
--10999--
Duration { secs: 0, nanos: 230013200 }

C:\Users\DW\Desktop\myrust>main.exe
--10999--
Duration { secs: 0, nanos: 224012800 }

C:\Users\1\Desktop\myrust>main.exe
--10999--
Duration { secs: 0, nanos: 223012800 }
也许是编译器不同吧,或者电脑硬件问题。可能出入很大。可自己明辨。我说过只是娱乐,不代表什么。
d
dongweigogo
无法理解你的结果怎么来的
Rust 1.9 均为 220+ 毫秒
C:\Users\1\Desktop\myrust>main.exe
--10999--
Duration { secs: 0, nanos: 230013200 }

C:\Users\DW\Desktop\myrust>main.exe
--10999--
Duration { secs: 0, nanos: 224012800 }

C:\Users\1\Desktop\myrust>main.exe
--10999--
Duration { secs: 0, nanos: 223012800 }
啦啦啦拉拉
啦啦啦拉拉
除了C语言,其他都看不顺眼。
duchipore
duchipore
Go 1.5.1 这么牛逼了?这不科学啊。。。
捍卫机密
捍卫机密 博主

引用来自“狂徒归来”的评论

首先 作为一个c/c++ 脑残粉,对这份报告,我表示不满!实际上控制台返回的时间并没有1100ms+,开启-o3后,

total = 10999, 0.143000 seconds

Process returned 0 (0x0) execution time : 0.149 s
Press any key to continue.

我觉得楼主的测试很不准!

这是不开启任何优化c++的表现
total = 10999, 0.403000 seconds

Process returned 0 (0x0) execution time : 0.408 s
Press any key to continue.

我待会测试下RUST
还请赐教,我毕竟不是专业C++。我只不过是尽量让几个程序一样而已。其实这些个程序我都是现学现用的。不专业是肯定的。纯娱乐吗!
狂徒归来
首先 作为一个c/c++ 脑残粉,对这份报告,我表示不满!实际上控制台返回的时间并没有1100ms+,开启-o3后,

total = 10999, 0.143000 seconds

Process returned 0 (0x0) execution time : 0.149 s
Press any key to continue.

我觉得楼主的测试很不准!

这是不开启任何优化c++的表现
total = 10999, 0.403000 seconds

Process returned 0 (0x0) execution time : 0.408 s
Press any key to continue.

我待会测试下RUST
狂徒归来
测试
Nim 语言引发关注

一种新兴的编程语言项目最近吸引了越来越人的关注。Nim是一种静态类型、命令式的系统级编程语言,其作者是Andreas Rumpf,最新版本是v0.10.2,正在向1.0版迈进。Nim的语法受到了Python和Pas...

oschina
2015/02/17
13.2K
46
使用5种编程语言开发PHP扩展

使用C语言开发 介绍参考链接:http://blog.csdn.net/heiyeshuwu/article/details/44267021 https://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/ 2. 使用C......

老查
2017/11/10
111
0
真实id隐藏库--hashids

用于隐藏真实的id 原理是从数字经过一个加盐(salted)算法产生一个哈希(hash)字符串。这样算法就是通过混淆使结果具有不可预测性,而唯一性依然由数字本身来达成,从而得到(类似 youtube 里的...

匿名
2016/01/21
1K
0
街头霸王--StreetFighter

StreetFighter 是街头霸王游戏,有 90 年代的感觉。 主机: 移动: W: 上, D: 前, A: 后, S:下 攻击: J: 轻拳, K: 重拳, U: 轻腿, I: 重腿 技能: 下→前→拳: 波动拳, 下→后→腿:旋风腿, 前...

叶秀兰
2014/09/17
2.5K
0
C++ 测试框架--doctest

doctest 是一个新的 C++ 测试框架。与其他功能丰富的替代方案相比,编译时(by orders of magnitude)和运行时是最快的。它提供了编译语言(如 D/Rust/Nim)的能力,并通过提供一个快速,透明...

匿名
2017/05/19
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Android -------- kotlin插件神器Json直接生成javaBean

这是一个data class从JSON字符串生成Kotlin 的插件,换句话说,是一个将JSON字符串转换为Kotlin data class(Json到Kotlin)的插件 在使用Kotlin进行开发的时候,我们需要经常对Json数据做解析...

切切歆语
16分钟前
22
0
1、Spring注解开发,第一天

第一天:Spring annotation开发 目录:1、@Configuration与@Bean给容器注册组件 2、@ConponentScan自动扫描注解 一、@Configuration与@Bean给容器注册组件 1、旧版本中创建配置文件和Bean //...

有一个小阿飞
23分钟前
18
0
斯坦福博弈论笔记整理活动的任务已重新划分,望周知

参与方式:https://github.com/apachecn/stanford-game-theory-notes-zh/blob/master/CONTRIBUTING.md 整体进度:https://github.com/apachecn/stanford-game-theory-notes-zh/issues/1 项目......

ApacheCN_飞龙
24分钟前
15
0
使用HTML5 canvas完成的一个网页白板

该代码能够使用canvas对象完成的一个基本功能。仅供大家参考。 <html> <head> <meta http-equiv="Content-Type" contentType="text/html; charset=UTF-8" %> <title>Title</title> <script t......

前端老手
27分钟前
15
0
web漏洞之xss(学习记录)

xss又名跨站脚本攻击,是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器...

半缘修道半缘君丶
29分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部