laptop: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz..

Test1:

最后一行:时间(ms)

#pragma GCC optimize("O2")
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char const *argv[]) {
int t = clock();
int a = 1000000000,b = 1;
while(a) {
b <<= 1;
a--;
}
printf("%d ms\n",clock() - t);
return 0;
} // 0 ms
var t;
t = new Date;
var a = 1000000000,
b = 1;
while(a) {
b <<= 1;
a--;
}
console.log(new Date - t + "ms"); // 915ms

Test2:

#pragma GCC optimize("O2")
#include <bits/stdc++.h>
using namespace std;
int a[10000100];
void quick_sort(int a[], int l, int r) {
if (l < r) {
int i = l, j = r, x = a[l];
while (i < j) {
while(i < j && a[j] >= x) j--;
if(i < j) a[i++] = a[j];
while(i < j && a[i] < x) i++;
if(i < j) a[j--] = a[i];
}
a[i] = x;
quick_sort(a, l, i - 1);
quick_sort(a, i + 1, r);
}
}
int main(int argc, char const *argv[]) {
srand((int)time(0));
for(int i = 0;i < 10000000; i++) {
a[i] = rand();
}
int t = clock();
quick_sort(a,0,10000000);
printf("%d ms\n",clock() -t);
return 0;
} // 1738 ms
function quick_sort(a,l,r) {
if (l < r) {
var i = l, j = r, x = a[l];
while (i < j) {
while(i < j && a[j] >= x) j--;
if(i < j) a[i++] = a[j];
while(i < j && a[i] < x) i++;
if(i < j) a[j--] = a[i];
}
a[i] = x;
quick_sort(a, l, i - 1);
quick_sort(a, i + 1, r);
}
}
var s,i,t;
for(i=0,s=[];i<10000000;i++) s.push(Math.random()*1E7|0);
t = new Date;
quick_sort(s,0,10000000);
console.log(new Date - t + " ms"); // 3080 ms

Test3:

#pragma GCC optimize("O2")
#include <bits/stdc++.h>
using namespace std;
const int maxn = 50000000;
int a[maxn];
int p[maxn],m[maxn];
int pc;
int main(int argc, char const *argv[]) {
int t = clock();
for(int i = 2; i < maxn; i++) {
if(m[i] == 0) {
p[++pc] = m[i] = i;
}
int k = 0;
for(int j = 1; j <= pc && p[j] <= m[i] && (k = p[j] * i) < maxn; j++) {
m[k] = p[j];
}
}
int ans = 0;
for(int i = 1; i <= pc; i++) {
ans ^= p[i];
}
printf("%d\n", ans);
printf("%d ms\n",clock() - t);
return 0;
} // 338 ms
var pc = 0;

var m = [];
var p = [];
function solve() {
// console.log("ok");
var i;
for(i = 2 ;i < 50000000;i++) {
if(m[i] == null) {
// console.log(i);
p[++pc] = m[i] = i;
}
var k = 0;
var j ;
for(j = 1; j <= pc && p[j] <= m[i] && (k = p[j] * i) < 50000000; j++) {
m[k] = p[j];
}
}
// console.log("pc = " + pc);
var ans = 0;
for(var i = 1; i <= pc; i++) {
ans ^= p[i];
}
console.log("ans= " + ans);
}
t = new Date;
solve();
console.log(new Date - t + " ms"); // 8096 ms

Test4:

#pragma GCC optimize("O2")
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000; int G[1000][1000];
int sed = 0;
inline int getRand()
{
return sed = (sed * sed * 73 + sed * 233 + 19260817) & 0x0000ffff;
}
int main(int argc, char const *argv[]) {
int t = clock();
for(int i = 0; i < maxn; i++) {
for(int j = 0; j < maxn; j++) {
G[i][j] = getRand();
}
}
for(int i = 0; i < maxn; i++) {
for(int j = 0; j < maxn; j++) {
for(int k = 0; k < maxn; k++) {
if(G[j][k] > G[j][i] + G[i][k]) {
G[j][k] = G[j][i] + G[i][k];
}
}
}
}
int ans = 0;
for(int i = 0; i < maxn; i++) {
for(int j = 0; j < maxn; j++) {
ans ^= G[i][j];
}
}
printf("%d\n", ans);
printf("%d ms\n",clock() - t);
return 0;
} // 1718 ms
var sed = 0;
var G = new Array();
function getRand() {
var res = sed = (sed * sed * 73 + sed * 233 + 19260817) & 0x0000ffff;
// console.log("res = " + res);
return res;
}
function solve() {
// console.log("ok");
for(var i = 0; i < 1000; i++) {
G[i] = new Array();
for(var j = 0; j < 1000; j++) {
G[i][j] = getRand();
}
}
for(var i = 0; i < 1000; i++) {
for(var j = 0; j < 1000; j++) {
for(var k = 0; k < 1000; k++) {
if(G[j][k] > G[j][i] + G[i][k]) {
G[j][k] = G[j][i] + G[i][k];
}
}
}
}
var ans = 0;
for(var i = 0; i < 1000; i++) {
for(var j = 0; j < 1000; j++) {
ans ^= G[i][j];
}
}
console.log("ans= " + ans);
}
t = new Date;
solve();
console.log(new Date - t + " ms"); // 3440 ms

Test5:

#pragma GCC optimize("O2")
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000000; // 1e9
typedef unsigned long long ull;
int P = 1000000007; int main(int argc, char const *argv[]) {
int t = clock();
ull ans = 1;
for(int i = 1; i < maxn; i++) {
ans = ans * i % P;
}
printf("%llu\n",ans);
printf("%d ms\n",clock() - t);
return 0;
} // 11953 ms
var P = 1000000007;
var maxn = 1000000000;// 1e9
function solve() {
// console.log("ok");
var ans = 1;
for(var i = 1; i < maxn; i++) {
ans = ans * i % P;
}
console.log("ans= " + ans);
}
t = new Date;
solve();
console.log(new Date - t + " ms"); // 32175 ms

理性分析 C++(-O2) 和 JS 的性能差距的更多相关文章

  1. 准备:新V8即将到来,Node.js的性能正在改变

    V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经 ...

  2. Babylon.js官方性能优化文档中文翻译

    在这里列出Babylon.js官方性能优化文档的中英文对照,并在CardSimulate项目里对其中的一些优化方法进行实践. How To 如何 Optimize your scene 优化你的场景 ...

  3. 多个JS文件性能优化

    页面中引入的JS文件是阻塞式加载的,这样会影响页面性能.以下是JS文件性能优化方法: 一:将所有的<script>标签放到页面底部,也就是</body>闭合标签之前,这能确保在 ...

  4. js开发性能(一)

    随着js技术的发展,性能问题开始被越来越多的人关注,最近了解了一些关于前端性能的问题,这里主要讨论一下在js脚本加载和执行的过程中,我们应该怎么样来提高js的性能. js脚本的处理 初学前端的时候,我 ...

  5. 纵论WebAssembly,JS在性能逆境下召唤强援

    webassembly的作用 webassembly是一种底层的二进制数据格式和一套可以操作这种数据的JS接口的统称.我们可以认为webassembly的范畴里包含两部分 wasm: 一种体积小.加载 ...

  6. php 5.6,7.0静态方法调用和new调用方法性能差距

    windows7 64 机器I5 8G内存,128G SSD 吐槽一下,win10内存的消耗,真的可怕 测试代码 class staticTest { public function test() { ...

  7. js 动画性能分析 transfrom

    1.动画实现代码 (1)使用定位实现: <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  8. 页面装载js及性能分析方法

    一.装载 先装载静态页面的引用js文件,然后查找引用文件中是否包含onload函数,比如main.js中包含onload函数,在main.js中查找是否有对其他js文件的引用,优先装载引用js文件,被 ...

  9. [Ext JS 4]性能优化

    一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...

随机推荐

  1. Java基础学习总结(17)——线程

    一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe ...

  2. 利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)

           在非常多企业级应用中,我们都没法直接通过开发语言sdk包封装的http工具来模拟http复合表单(multipart/form-data),特别是在跨语言跨平台的编程过程中.事实上实现方 ...

  3. CCNP路由实验之九 路由策略

     CCNP路由实验之九 路由策略 路由器在公布与接收路由信息时,可能须要实施一些策略.以便对路由信息进行过滤,比如仅仅接收或公布满足一定条件的路由信息. 一种路由协议可能须要引入其它的路由协议发现 ...

  4. Beautiful Number

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2829 Beautiful Number Time Limit: 2 Sec ...

  5. Linux中配置网桥

    使用kvm虚拟机时,有时候需要自己添加网桥供guest使用. 不使用libvirt来管理的话,可以使用以下方法创建网桥并绑定到物理网卡(RHEL6/Fedora已实验): 1.创建网桥配置文件ifcf ...

  6. [Python] Slicing Lists

    In addition to accessing individual elements from a list we can use Python's slicing notation to acc ...

  7. Hadoop for .NET Developers

    Hadoop for .NET Developers(一):理解Hadoop 这些年来,大数据已经成为分析业界的兴奋源头.对于这个博客系列的目的,我将松散定义这个术语指的重点是从数据核心业务系统里数据 ...

  8. RvmTranslator6.0 - AVEVA Marine Hull Model

    eryar@163.com 1. Introduction RvmTranslator can translate the RVM file exported by AVEVA Plant(PDMS) ...

  9. Java 实现策略(Strategy)模式

    策略模式:行为型模式 将同一行为,不同的处理算法分别封装起来.让它们之间能够互相替换 1. 定义一个超类型接口,及 行为方法 2. 定义不同的实现类,实现该行为的 不同的算法 /** * 策略模式:针 ...

  10. Codeforces 472D

    看官方题解提供的是最小生成树,怎么也想不明确.you can guess and prove it! 看了好几个人的代码.感觉实现思路全都不一样,不得不佩服cf题目想法的多样性 以下说说我自己的理解, ...