对比
选手一:国际选手
- Intel(R) Xeon(R) CPU E5-2690
- Gcc 11.3.0
- Ubuntu22.04
选手二:国产选手
- Hygon C86 7285
- gcc 7.3.0
- Kylin Linux Advanced Server V10 (Sword)
压力测试—— python
选手一:
- Intel(R) Xeon(R) CPU E5-2690
- python3.10
- Ubuntu22.04
选手二:
- Hygon C86 7285
- python3.7
- Kylin Linux Advanced Server V10 (Sword)
测试代码
import time
def calculate():
# 这里是一个简单的计算密集型任务,模拟耗时操作
for _ in range(10000000):
result = 10 * 20
if __name__ == "__main__":
num_iterations = 10 # 设置要进行的迭代次数
start_time = time.time()
for i in range(num_iterations):
calculate()
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Total time taken for {num_iterations} iterations: {elapsed_time:.2f} seconds")
测试结论
选手一: ubuntu+志强
- 3.10 (原生)版本耗时:2.20秒
- 3.7(docker)版本耗时:3.19秒
选手二:麒麟+海光
- 3.10(docker)版本耗时:5.808秒
- 3.7(原生)版本耗时:5.05秒
压力测试—— c 语言
选手一:国际选手
- Intel(R) Xeon(R) CPU E5-2690
- Gcc 11.3.0
- Ubuntu22.04
选手二:国产选手
- Hygon C86 7285
- gcc 7.3.0
- Kylin Linux Advanced Server V10 (Sword)
测试代码
#include <stdio.h>
#define LOOP_COUNT 1000000000
int main() {
int i;
long long sum = 0;
for (i = 0; i < LOOP_COUNT; i++) {
sum += i;
sum = sum * i + i;
sum = sum / (i + 1);
}
printf("Sum: %lld\n", sum);
return 0;
}
gcc -o test test.c && time ./test
测试结论
- 选手一:19.324 秒
- 选手二:22.527秒
上面的代码:
- 在 ubuntu23.04+i7-13700k + gcc 11.4.0上运行 4.692 秒
- 在 macbook pro m1 + clang 14.0.3上运行 8.102 秒
- 在 Intel Xeon Processor (Skylake, IBRS) + centos7 +gcc 4.8.5上运行 15.653 秒
测试结论:
- 跑 c 语言,「志强+ubuntu」 和 「海光+麒麟」 速度差不多,只有 10% 的差距
- 跑 python,「志强+ubuntu」比 「海光+麒麟」快 3 倍
又多挑选了一个选手
测试代码
import time
def calculate():
# 这里是一个简单的计算密集型任务,模拟耗时操作
for _ in range(10000000):
result = 10 * 20
if __name__ == "__main__":
num_iterations = 10 # 设置要进行的迭代次数
start_time = time.time()
for i in range(num_iterations):
calculate()
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Total time taken for {num_iterations} iterations: {elapsed_time:.2f} seconds")
测试结果
操作系统(发行版) | Linux内核 | CPU | python 版本 | 耗时(秒) |
---|---|---|---|---|
Debian10 | 4.19.0-17-amd64 | Intel(R) Xeon(R) Platinum 8269CY | 3.7.3 | 2.09 |
Ubuntu22.04 | 5.15.0-76-generic | Intel(R) Xeon(R) CPU E5-2690 v4 | 3.10.5 | 2.17 |
Kylin Linux Advanced Server V10 | 4.19.90-24.4.v2101.ky10.x86_64 | Hygon C86 7285 32-core | 3.7.9 | 5.08 |
Mac 13.4.1 | None | Apple Silicon M1 | 3.10.10 | 1.12 |
Ubuntu23.10 | 5.19.0-46-generic | i7-13700K | 3.9.13 | 0.78 |
CentOS Linux 7 | 3.10.0-1160.90.1.el7.x86_64 | Intel Xeon Processor (Skylake, IBRS) | 3.6.8 | 2.37 |
我的疑惑点在于,海光 CPU 其实就是 AMD 一代锐龙换了一个 logo,所以其性能是不差的
c 语言程序的测试结果也印证了这一点
但是 python 居然可以慢 3 倍,我就不理解了
补充一个 golang 的测试
package main
import (
"fmt"
"time"
)
func calculate() {
// 这里是一个简单的计算密集型任务,模拟耗时操作
for i := 0; i < 10000000; i++ {
result := 10 * 20
_ = result
}
}
func main() {
numIterations := 2000 // 设置要进行的迭代次数
startTime := time.Now()
for i := 0; i < numIterations; i++ {
calculate()
}
endTime := time.Now()
elapsedTime := endTime.Sub(startTime)
fmt.Printf("Total time taken for %d iterations: %.2f seconds\n", numIterations, elapsedTime.Seconds())
}
CGO_ENABLED=0 go build main.go
操作系统(发行版) | Linux内核 | CPU | 耗时(秒) |
---|---|---|---|
Ubuntu22.04 | 5.15.0-76-generic | Intel(R) Xeon(R) CPU E5-2690 v4 | 5.84 |
Kylin Linux Advanced Server V10 | 4.19.90-24.4.v2101.ky10.x86_64 | Hygon C86 7285 32-core | 11.21 |
Mac 13.4.1 | None | Apple Silicon M1 | 6.32 |
测试结果发现,这段 golang 程序,在麒麟+海光上也慢