对比几个测试云的一些速度

 最近被hosting vps主机的速度给困扰了,干脆放下手中的活 测试下

test.php放在网站根目录即可

代码如下:

<?php
/*** 最终版服务器性能测试工具* 测试项目:CPU运算性能、内存读写速度、硬盘IO速度、网络下载速度*/// 配置参数(已优化以控制总测试时间在100秒内)
$config = ['cpu_test_duration' => 3,      // CPU测试持续秒数'mem_test_size' => 32,         // 内存测试大小(MB)'disk_test_size' => 50,        // 硬盘测试大小(MB)'disk_block_size' => 4,        // 硬盘测试块大小(KB)'net_test_size_mb' => 50,      // 网络测试下载大小(MB)'net_test_url' => 'https://speed.hetzner.de/100MB.bin', // 网络测试文件'tmp_file' => __DIR__ . '/benchmark_tempfile.tmp'      // 临时文件路径
];// 工具函数:格式化大小显示
function formatSize($bytes) {$units = ['B', 'KB', 'MB', 'GB', 'TB'];$unit = 0;while ($bytes >= 1024 && $unit < 4) {$bytes /= 1024;$unit++;}return number_format($bytes, 2) . ' ' . $units[$unit];
}// 工具函数:格式化时间显示
function formatTime($seconds) {if ($seconds < 1) return number_format($seconds * 1000, 1) . ' ms';return number_format($seconds, 3) . ' s';
}// 工具函数:输出分隔线
function printSeparator() {echo "----------------------------------------\n";
}// 工具函数:确保在浏览器和CLI中都能正确换行
function eol() {return (PHP_SAPI === 'cli') ? "\n" : "<br>\n";
}// 记录总开始时间
$start_time = microtime(true);// 标题显示
echo eol();
printSeparator();
echo "          服务器性能测试结果          " . eol();
printSeparator();
echo "测试时间:" . date('Y-m-d H:i:s') . eol() . eol();// 1. CPU性能测试(计算质数)
echo "[1/4] CPU性能测试中...";
$startTime = microtime(true);
$primeCount = 0;
$currentNumber = 2;while (microtime(true) - $startTime < $config['cpu_test_duration']) {$isPrime = true;for ($i = 2; $i <= sqrt($currentNumber); $i++) {if ($currentNumber % $i == 0) {$isPrime = false;break;}}if ($isPrime) $primeCount++;$currentNumber++;
}$cpuTime = microtime(true) - $startTime;
$cpuResult = ['duration' => $cpuTime,'prime_count' => $primeCount,'per_second' => $primeCount / $cpuTime
];
echo "完成" . eol();// 2. 内存性能测试
echo "[2/4] 内存性能测试中...";
$memSize = $config['mem_test_size'] * 1024 * 1024; // 转换为字节
$blockSize = 4096;
$blocks = $memSize / $blockSize;
$data = [];// 内存写入测试
$startTime = microtime(true);
for ($i = 0; $i < $blocks; $i++) {$data[] = str_repeat(chr(rand(0, 255)), $blockSize);
}
$writeTime = microtime(true) - $startTime;// 内存读取测试
$startTime = microtime(true);
$checksum = 0;
for ($i = 0; $i < $blocks; $i++) {$checksum += crc32($data[$i]);
}
$readTime = microtime(true) - $startTime;// 释放内存
unset($data);$memResult = ['write_speed' => $config['mem_test_size'] / $writeTime,'read_speed' => $config['mem_test_size'] / $readTime
];
echo "完成" . eol();// 3. 硬盘IO测试
echo "[3/4] 硬盘IO测试中...";
$testFile = $config['tmp_file'];
$diskSize = $config['disk_test_size'] * 1024 * 1024;
$blockSize = $config['disk_block_size'] * 1024;
$totalBlocks = $diskSize / $blockSize;
$randomData = random_bytes($blockSize);// 写入测试
$startTime = microtime(true);
$file = fopen($testFile, 'wb');
for ($i = 0; $i < $totalBlocks; $i++) {fwrite($file, $randomData);
}
fclose($file);
$writeTime = microtime(true) - $startTime;// 读取测试
$startTime = microtime(true);
$file = fopen($testFile, 'rb');
for ($i = 0; $i < $totalBlocks; $i++) {fread($file, $blockSize);
}
fclose($file);
$readTime = microtime(true) - $startTime;// 删除测试文件
@unlink($testFile);$diskResult = ['write_speed' => $config['disk_test_size'] / $writeTime,'read_speed' => $config['disk_test_size'] / $readTime,'write_iops' => $totalBlocks / $writeTime,'read_iops' => $totalBlocks / $readTime
];
echo "完成" . eol();// 4. 网络速度测试(下载测试)
echo "[4/4] 网络速度测试中...";
$testUrl = $config['net_test_url'];
$startTime = microtime(true);
$ch = curl_init($testUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOPROGRESS, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 最大超时60秒
$content = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$downloadSize = min(curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD) / 1024 / 1024, $config['net_test_size_mb']); // MB
$downloadTime = microtime(true) - $startTime;
curl_close($ch);$netResult = ['speed' => 0,'size' => $downloadSize,'time' => $downloadTime
];if ($httpCode == 200 && $downloadSize > 0 && $downloadTime > 0) {$netResult['speed'] = $downloadSize / $downloadTime;
}
echo "完成" . eol() . eol();// 最终汇总报告
printSeparator();
echo "              测试结果汇总              " . eol();
printSeparator();
echo "1. CPU性能:" . number_format($cpuResult['per_second'], 1) . " 质数/秒" . eol();
echo "   测试时间:" . formatTime($cpuResult['duration']) . eol() . eol();
echo "2. 内存性能:" . eol();
echo "   写入速度:" . number_format($memResult['write_speed'], 2) . " MB/s" . eol();
echo "   读取速度:" . number_format($memResult['read_speed'], 2) . " MB/s" . eol() . eol();
echo "3. 硬盘IO:" . eol();
echo "   写入速度:" . number_format($diskResult['write_speed'], 2) . " MB/s(IOPS: " . number_format($diskResult['write_iops'], 0) . ")" . eol();
echo "   读取速度:" . number_format($diskResult['read_speed'], 2) . " MB/s(IOPS: " . number_format($diskResult['read_iops'], 0) . ")" . eol() . eol();
echo "4. 网络速度:" . eol();
echo "   下载速度:" . number_format($netResult['speed'], 2) . " MB/s(" . number_format($netResult['speed'] * 8, 2) . " Mbps)" . eol() . eol();
echo "测试总耗时:" . formatTime(microtime(true) - $start_time) . eol();
echo "测试完成时间:" . date('Y-m-d H:i:s') . eol() . eol();
?>

不得不服气阿里云,在国内一直是遥遥领先的存在! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89093.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5 Grid3D 学习笔记

一、Neighbor Grid 3D 的核心作用 NeighborGrid3D 是一种基于位置的哈希查找结构&#xff0c;将粒子按空间位置划分到网格单元&#xff08;Cell&#xff09;中&#xff0c;实现快速邻近查询&#xff1a; 空间划分&#xff1a;将模拟空间划分为多个三维网格单元&#xff08;Cel…

Spring AI ——在springboot应用中实现基本聊天功能

文章目录 前言测试环境项目构建依赖引入指定openai 相关配置基于 application.yml 配置 Open AI 属性application.yml编写测试类测试请求基于读取后配置请求编写测试接口测试效果展示流式输出前言 AI 技术越来越火爆,作为Java开发人员也不能拖了后腿。 前段时间使用LangChain…

条件概率:不确定性决策的基石

条件概率是概率论中的核心概念&#xff0c;用于描述在已知某一事件发生的条件下&#xff0c;另一事件发生的概率。它量化了事件之间的关联性&#xff0c;是贝叶斯推理、统计建模和机器学习的基础。 本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术…

搭建Flink分布式集群

1. 基础环境&#xff1a; 1.1 安装JDK 本次使用 jdk-11.0.26_linux-x64_bin.tar.gz 解压缩 tar -zxvf jdk-11.0.26_linux-x64_bin.tar.gz -C /usr/local/java/ 配置环境变量&#xff1a; vi /etc/profileJAVA_HOME/usr/local/java/jdk-11.0.26 CLASSPATH.:${JAVA_HOME}/li…

基于ssm校园综合服务系统微信小程序源码数据库文档

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;校园综合服务被用户普遍使用&#xff0c;为方便用户能够可…

桌面小屏幕实战课程:DesktopScreen 17 HTTPS

飞书文档http://https://x509p6c8to.feishu.cn/docx/doxcn8qjiNXmw2r3vBEdc7XCBCh 源码参考&#xff1a; /home/kemp/work/esp/esp-idf/examples/protocols/https_request 源码下载方式参考&#xff1a; 源码下载方式 获取网站ca证书 openssl s_client -showcerts -connec…

uniapp上传gitee

右键点击项目&#xff0c;选择git提交&#xff0c;会弹出这样的弹窗 在Message输入框里面输入更新的内容&#xff0c;选择更新过的文件&#xff0c;然后点击commit 然后点击push 后面会让你填写gitee的用户名和密码 用户名就是邮箱 密码就是登录gitee的密码

重写(Override)与重载(Overload)深度解析

在Java面向对象编程中&#xff0c;多态性是一个核心概念&#xff0c;它允许我们以统一的方式处理不同类型的对象。而实现多态性的两种重要机制便是方法的“重写”&#xff08;Override&#xff09;与“重载”&#xff08;Overload&#xff09;。透彻理解这两者之间的区别与联系…

Go 语言中操作 SQLite

sqlite以其无需安装和配置&#xff1a;直接使用数据库文件&#xff0c;无需启动独立的数据库服务进程。 单文件存储&#xff1a;整个数据库&#xff08;包括表、索引、数据等&#xff09;存储在单个跨平台文件中&#xff0c;便于迁移和备份。 在应对的小型应用软件中.有着不可…

【硬核数学】2.3 AI的“想象力”:概率深度学习与生成模型《从零构建机器学习、深度学习到LLM的数学认知》

欢迎来到本系列的第八篇文章。在前七章中&#xff0c;我们已经构建了一个强大的深度学习工具箱&#xff1a;我们用张量来处理高维数据&#xff0c;用反向传播来高效地计算梯度&#xff0c;用梯度下降来优化模型参数。我们训练出的模型在分类、回归等任务上表现出色。 但它们有…

华为云Flexus+DeepSeek征文|Dify平台开发搭建口腔牙科24小时在线问诊系统(AI知识库系统)

引言&#xff1a;为什么需要口腔牙科24小时在线问诊系统&#xff1f; 在口腔医疗领域&#xff0c;“时间”是患者最敏感的需求之一——深夜牙齿突发疼痛、周末想提前了解治疗方案、异地患者无法及时到院……传统“工作时间在线”的咨询模式已无法满足用户需求。同时&#xff0…

嵌入式硬件中电容的基本原理与详解

大家好我们今天重讨论点知识点如下: 1.电容在电路中的作用 2.用生活中水缸的例子来比喻电容 3.电容存储能力原理 4.电容封装的种类介绍电容种类图片辨识 5.X 电容的作用介绍 6.Y 电容的作用介绍7.钽电容的优点及特性 7.钽电容的缺点及特性 8. 铝电解电容的优点及特性…

中央空调控制系统深度解析:从原理到智能AIOT运维

——附水冷式系统全电路图解与技术参数 一、中央空调系统架构与技术演进 1. 两大主流系统对比 技术趋势&#xff1a;2023年全球冷水机组市场占比达68%&#xff08;BSRIA数据&#xff09;&#xff0c;其核心优势在于&#xff1a; - 分区控温精度&#xff1a;0.5℃&#…

document.write 和 innerHTML、innerText 的区别

document.write 与 innerHTML、innerText 的区别 document.write 直接写入 HTML 文档流&#xff0c;若在页面加载完成后调用会覆盖整个文档。常用于动态生成内容&#xff0c;但会破坏现有 DOM 结构&#xff0c;不推荐在现代开发中使用。 document.write("<p>直接写…

日志分析与实时监控:Elasticsearch在DevOps中的核心作用

引言 在现代DevOps实践中&#xff0c;日志分析与实时监控是保障系统稳定性与性能的关键。Elasticsearch作为分布式搜索与分析引擎&#xff0c;凭借其高效的索引与查询能力&#xff0c;成为构建日志管理与监控系统的核心组件。本文将深入探讨Elasticsearch在DevOps中的应用&…

Unity Catalog 三大升级:Data+AI 时代的统一治理再进化

在刚刚落幕的 2025 Databricks Data AI Summit 上&#xff0c;Databricks 重磅发布了多项 Lakehouse 相关功能更新。其中&#xff0c;面向数据湖治理场景的统一数据访问与管理方案 —— Unity Catalog&#xff0c;迎来了三大关键升级&#xff1a;全面支持 Apache Iceberg、面向…

电容屏触摸不灵敏及跳点问题分析

在电容屏的使用过程中&#xff0c;触摸不灵敏和触点不精准是极为常见且让人困扰的问题。这些问题不仅影响用户的操作体验&#xff0c;在一些对触摸精度要求较高的场景&#xff0c;如工业控制、绘图设计等领域&#xff0c;还可能导致严重的后果。下面我们就来深入剖析一下这两个…

小程序学习笔记:导航、刷新、加载、生命周期

在小程序开发的领域中&#xff0c;掌握视图与逻辑相关的技能是打造功能完备、用户体验良好应用的关键。今天&#xff0c;咱们就来深入梳理一下小程序视图与逻辑的学习要点&#xff0c;并结合代码示例&#xff0c;让大家有更直观的理解。 一、页面之间的导航跳转 在小程序里实…

生成树基础实验

以太网交换网络中为了进行链路备份&#xff0c;提高网络可靠性&#xff0c;通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路&#xff0c;引发广播风暴以及 MAC地址表不稳定等故障现象&#xff0c;从而导致用户通信质量较差&#xff0c;甚至通信中断。 为解决交换…

flex布局实例:把色子放进盒子里

目录 一、flex布局实例&#xff1a;把色子放进盒子里 1、基础样式 二、justify-content 属性 三、flex-direction 属性 四、align-items 属性 五、flex-wrap 属性 二、flex布局应用到常见场景 非常详细的讲解flex布局&#xff0c;看一看&#xff0c;练一练&#xff01; …