javascript、ruby和C性能一瞥(2)

简介:

好吧,最后让我们用C来实现,看看再能榨取多少性能。注意我没有改变算法,C的算法和之前的3种都是基本相同的:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

typedef unsigned long long ULL;

//if failed return 0
ULL sieve(ULL n)
{
    char *a = malloc(n+1);
    if(!a) return 0;
    memset(a,0,n+1);
    ULL max = sqrtl(n);
    ULL p = 2;
    while(p <= max){
        for(ULL i=2*p;i<=n;i+=p)
            a[i] = 1;
        while(a[++p]); /* empty */
    }
    while(a[n]) n--;
    return n;
}

int main(int argc,char **argv)
{
    ULL n = 0;
    if(argc < 2){
        printf("usage %s n\n",argv[0]);
        return 1;
    }
    sscanf(argv[1],"%llu",&n);
    if(n == 0){
        puts("wrong number format");
        return 2;
    }
    else if(n < 0){
        puts("must + number");
        return 3;
    }

    int start = clock();
    ULL result = sieve(n);
    if(!result){
        puts("sieve calc failed!");
        return 4;
    }
    double end = ((1.0 * (clock() - start)) / CLOCKS_PER_SEC) * 1000.0;
    printf("max p is %llu (take %f ms)\n",result,end);
    return 0;
}

结果只比浏览器版的js稍慢一点,可见浏览器js优化的效果之好。不过C的计算非常稳定,不像浏览器中的js多次计算后性能急剧下降。

相关文章
|
3月前
|
数据采集 并行计算 JavaScript
实战指南:在 Node.js 中利用多线程提升性能
在 Node.js 的世界中,多线程技术一直是一个受到广泛关注的领域。最初,Node.js 设计为单线程模式。随着技术发展,Node.js 引入了多线程支持,进而利用多核处理器的强大性能,提升了应用性能。接下来的内容将深入探讨 Node.js 如何实现多线程,以及在何种场合应该采用这种技术。
|
4月前
|
负载均衡 JavaScript 算法
Node.js 多进程的概念、原理、优势以及如何使用多进程来提高应用程序的性能和可伸缩性
Node.js 多进程的概念、原理、优势以及如何使用多进程来提高应用程序的性能和可伸缩性
43 1
|
5天前
|
算法
Swiper库和Glide.js库的性能有何区别
Swiper和Glide.js是两个流行的响应式轮播图库。Swiper功能强大且灵活,支持多方向滑动,拥有丰富的配置和切换效果,适合复杂需求,其高性能得益于优化的算法和惰性加载。Glide.js则轻量级、快速,专注于基础功能,适合简洁需求。两者各有侧重,选择应基于项目具体需求和性能考虑。
|
1月前
|
存储 JavaScript 编译器
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
|
1月前
|
JavaScript 前端开发
在JavaScript中,如何优化原型链的性能?
在JavaScript中,如何优化原型链的性能?
16 2
|
3月前
|
缓存 JavaScript 前端开发
原生js浪费性能吗?
原生js浪费性能吗?
17 0
|
5月前
|
前端开发 JavaScript UED
JavaScript异步编程:提升性能与用户体验
JavaScript异步编程:提升性能与用户体验
41 1
|
6月前
|
JavaScript 前端开发 网络协议
带你读《现代Javascript高级教程》三十二、Performance API: 提升网页性能的利器(1)
带你读《现代Javascript高级教程》三十二、Performance API: 提升网页性能的利器(1)
|
6月前
|
监控 JavaScript 前端开发
带你读《现代Javascript高级教程》三十二、Performance API: 提升网页性能的利器(2)
带你读《现代Javascript高级教程》三十二、Performance API: 提升网页性能的利器(2)
|
6月前
|
监控 JavaScript 前端开发
带你读《现代Javascript高级教程》三十二、Performance API: 提升网页性能的利器(3)
带你读《现代Javascript高级教程》三十二、Performance API: 提升网页性能的利器(3)