网站首页 > 知识剖析 正文
JavaScript是一种广泛使用网页编程脚本语言,在浏览器中运用JavaScript技术处理统计数据具有极佳的工作效率。
JavaScript是主要用于开发Web页面的脚本语言,是基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
毫无疑问,JS+HTML+CSS网页三剑客组合在浏览器环境中表现出的数据(数字、文本、图表、音频)展示能力是无与伦比的。但当数据量较大时,其数据处理能力较低。用JS脚本处理数据和计算一直不是JS的长项。JavaScript处理数据有越界之嫌。
JS代码运行在浏览器环境,当JS和浏览器版本较低时,JS数据处理能力(速度和容量)确实较低。随着Web相关技术的发展,JavaScript所要承担的工作也越来越多,早就超越了网页渲染的范畴,这就更需要快速的解析和执行JavaScript脚本。Google Chrome V8引擎就是为解决这一问题而生,JS在应用数学、统计学方面的使用场景越来越多,JS在强大数据展示能力基础上正在逐渐具备强大的数据处理能力!
本文通过10亿次循环求和对比分析JavaScript、VBA、R和Python代码运行效率,说明今日的JavaScript已经“今非昔比”,通过网页处理统计大数据已经成为现实。
1、JavaScript循环代码
【JS代码1】
//JS低效循环,用时64.54秒
console.clear();
console.time('sum');
let sum = 0;
for (var i=0; i<1000000000; i++) {
sum+=i;
}
console.log(sum);
console.timeEnd('sum');
【JS代码2】
//JS高效循序,用时13.19秒
console.clear();
console.time('sum');
let sum = 0;
let i;
for (i=0; i<1000000000; i++) {
sum+=i;
}
console.log(sum);
console.timeEnd('sum');
JS高效循序代码用时13.19秒!
注意,JS代码循序参数较多时,切记不要在循环内重复定义变量!
2、其它软件循环代码
【VBA代码】
'VBA代码用时18.97
Sub speedTest()
Dim i As Long
Dim t
Dim s As Double
t = Timer
For i = 1 To 1000000000
s = s + i
Next
MsgBox ("程序运行了" & Format(Timer - t, "0.0000" & "秒"))
End Sub
【Python代码】
#Python代码用时30.25
import time
start_time = time.time()
s = 0
for i in range(100000000):
s += i
end_time = time.time()
run_time = end_time - start_time
print("代码运行时间:", run_time, "秒")
【R代码】
#R代码用时40.13
s <- 0
system.time({for (i in 1:1000000000) {s <- s+i;}})
由于电脑配置、软件版本的不同,测试结果可以存在差异,可以用耗时比重表示不同软件的循环效率。如下表:
软件 | JavaScript | VBA | Python | R |
耗时(秒) | 13.19 | 18.97 | 30.25 | 40.13 |
耗时比重 | 1 | 1.4382 | 2.2934 | 3.0425 |
四种语言分别循环10亿次求和,结果JS耗时最少,是否感到有点意外。
代码中JS低效循环程序块是常见的编写方式(即【for (var i=0; i<1000000000; i++) {}】循环中加“var”重复定义变量),对于完成上10亿次循环求和简直是灾难!
鉴于JS优秀循环运行效率,可以轻松完成各类网络统计学库函数和在网页上进行统计大数据处理或和复杂分析。
猜你喜欢
- 2024-11-17 CSV Parquet Avro:为正确的工作选择合适的工具
- 2024-11-17 JS基础进阶- 同步异步编程和EventLoop底层机制
- 2024-11-17 5个你应该知道的JavaScript技巧,不能错过!
- 2024-11-17 map映射+异步加载 完美过渡 if else
- 2024-11-17 Chrome控制台的一些有用API(chrome控件)
- 2024-11-17 Javascript调试器自编代码及运用(js调试工具和方法如何使用)
- 2024-11-17 NET中的定时器:种类与应用场景(winform定时器)
- 2024-11-17 全栈之路:从一个深拷贝开始循序渐进
- 2024-11-17 localStorage灵魂五问。 5M??10M(灵魂官方网站)
- 2024-11-17 JS中用于跟踪程序执行时间的专用函数,两个同时出现截断时间戳
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)