介绍
V语言在HN上经常被讨论,号称有几个优点:
- 安全(默认不可变变量等类似Rust特性)
- 简单易用(语法一看就懂)
- 内置包管理工具(VPM)
- 跨平台UI
目的
- 初步了解V语言;
- 学习valgrind工具获取程序运行信息;
- 冒泡排序Rust对比V语言;
- 作为技术决策的调研数据;
V的其它优势
可以将C语言工程直接翻译为V
hot reload
类似于增量编译,每次修改代码不需要编译整个工程
基于OpenGL/Metel/DirectX11的图形库
- 加载3D模型和材质
- Camera
- 骨骼动画
交叉编译容易
加一个参数就可以在Windows平台上编译为Linux,这个比较强大,目前主流交叉编译的项目例如ReactNative,Electron的做法都比这个要麻烦。
v -os windows
或者v -os linux
即可。
没搞懂它背后如何实现的,可能搞了一种字节码和runtime。
测试条件
硬件
CPU: Intel® Core™ i7-8700 CPU @ 3.20GHz 3.19 GHz
RAM: 16.0 GB
OS
Microsoft Windows 11
WSL2 Ubuntu 22.04.2 LTS
项目
- 文件读取
- JSON parse
- 冒泡排序
所以正好有兴趣测试一下V语言是否像它宣称的那么好。测试条件我选择从文件中读取JSON数据,分析后对数组进行冒泡排序,这个测试第一可以测试IO性能,第二增加了JSON parse的过程,最后用冒泡排序查看内存使用情况。
代码如下:
import os
import time
import json
fn main() {
sw := time.new_stopwatch()
str := os.read_file('../data.json')!
mut arr := json.decode([][]f64, str)!
// println(arr)
for i in 0..arr.len {
bubble_sort(mut arr[i])
// println(arr[i])
}
println('消耗时间 : ${sw.elapsed().milliseconds()}ms')
}
// Bubble Sort
[direct_array_access]
fn bubble_sort(mut array []f64) {
for i in 0..array.len {
for j in 0..array.len - 1 - i {
if array[j] > array[j + 1] {
array[j], array[j + 1] = array[j + 1], array[j]
}
}
}
// println('${array[i]}')
}
Rust部分代码
us