基础准备
我的使用验算的步骤是
生成数据 -> 记录时间 -> 进行排序 -> 记录时间 -> 验算是否正确 -> 归类时间
那么我们,需要生成数据的函数,达到毫秒的函数,可以测算出是否已经排序成功的函数
首先生成可用测试的随机数据(函数)
- 这是验算的数据,所以只需要混交的就行
- 通过传入所需要生成的总数,生成 num 条数据,比如:10 条
- 数据内容是随机从开始到结束的数字,比如:从 1 到 10
- 注意 rangeR 要比 rangeL 小
/**
* 生成随机数据
* @param int $num 需要生成的总数
* @param int $rangeL 开始数字
* @param int $rangeR 结束数字
* @return array
*/
function generateSort(int $num,int $rangeL,int $rangeR):array {
$sort = array();
for ($i = 0; $i < $num;$i++){
$sort[$i] = rand($rangeL,$rangeR);
}
return $sort;
}
还有生成一种近乎有序的数据(函数)
- 和上面类似
- 但是随机最小值会往上走,达到近乎有序
/**
* 生成随机数据
* @param int $num 需要生成的总数
* @param int $rangeL 开始数字
* @param int $rangeR 结束数字
* @return array
*/
function generateSort(int $num,int $rangeL,int $rangeR):array {
$sort = array();
for ($i = 0; $i < $num;$i++){
$sort[$i] = rand($rangeL + $i,$rangeR);
}
return $sort;
}
验算是否排序正确的(函数)
- 我这里做的比较简单
- 循环一次,当上一个数字,比下一个数字要小的时候则是不正确
- 在我们生成数字的时候,是绝对不会相对有序的
/**
* 验算是否正确
* @param array $sort
* @return bool
*/
function isSort(array $sort):bool {
$n = count($sort);
for($i = 0; $i < $n - 1; $i++){
if($sort[$i] > $sort[$i + 1]){
return false;
}
}
return true;
}
获取毫秒时间(函数)
- 在
php
中是没有毫秒函数的,只能自己写一个 - 在数据量小的情况下,算法是按照毫秒计算的,不是秒
/**
* 获取毫秒时间
* @return float
*/
function millisecond():float {
list($msec, $sec) = explode(' ', microtime());
return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
}
打印函数
- 因为我们用的是原生的
php
,而且用的是fpm
。 - 数据打印在浏览器上,为了我们的视觉感受,我觉得这个有必要
/**
* 一个好看一点的打印函数
* @param $var
*/
function dump($var){
ob_start();
var_dump($var);
$output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', ob_get_clean());
if (!extension_loaded('xdebug')) {
$output = htmlspecialchars($output, ENT_SUBSTITUTE);
}
$output = '<pre>' . $output . '</pre>';
echo($output);
}
更多学习内容请访问:
腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。