有哪些效果图做的好的网站,东莞网络推广培训班,和平天津网站建设,wordpress没有侧边栏十多年前开发框架时#xff0c;为了效率不断试过各种代码写法#xff0c;今天又遇到了#xff0c;想想php8时代会不会有所变化#xff0c;结果其实也还是和当年一样#xff0c;但当年没写博客#xff0c;但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目… 十多年前开发框架时为了效率不断试过各种代码写法今天又遇到了想想php8时代会不会有所变化结果其实也还是和当年一样但当年没写博客但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目基本情况是一个考试系统调用题库后根据是否需要随机出选项和是否需要统一改分数这两个条件循环对每一道题的初始数据进行修改。我是从类的方法里直接截取的代码片段所以代码部分只需懂意思即可命名都很容易理解。
$result 是数据库里提取的题库$score 是统一的题型分数如果没有统一题型分数那么每题都有自己不同的初始分$this-l_char-json_to_array() 是char字符类json转化为数组格式的方法$this-_random_option() 是随机化题目选项目前题库共有3328题每个题型所含题目数量不同PHP版本为8.1.3
为了保证尽量每种方法的实验数据在一个条件下所以禁用随机出题保证题目都一样同时保证每题的选项都在随机变化。 判断后循环
if(!empty($score) and !empty($israndomoption))
{ foreach($result as $k$row){//分数$row[questionscore] $score;//选项是否随机$row[questionoption] $this-l_char-json_to_array($row[questionoption]);$row[questionoption] $this-_random_option($row[questionoption]);$result[$k] $row;}
}elseif(!empty($score)){ foreach($result as $k$row){//分数$row[questionscore] $score;$result[$k] $row;}
}elseif(!empty($israndomoption)){ foreach($result as $k$row){//选项是否随机$row[questionoption] $this-l_char-json_to_array($row[questionoption]);$row[questionoption] $this-_random_option($row[questionoption]);$result[$k] $row;}
}某题型有2题
次数执行时间内存占用10.000015153952820.000017154337630.000015154328040.000015154328050.000016154328060.000016154328070.000017154328080.000038154328090.0000171543280100.0000151543280
某题型有20题
次数执行时间内存占用10.000026155127220.000025156024030.000026156065640.000027156065650.000027156065660.000044156065670.000026156065680.000027156065690.0000261560656100.0000261560656
某题型有50题
次数执行时间内存占用10.000080180583220.000078186804830.000076186846440.000077186846450.000085186846460.000078186846470.000084186846480.000087186846490.0000881868464100.0000831868464
每题题型数量不限
次数题型1执行时间题型1内存占用题型2执行时间题型2内存占用题型3执行时间题型3内存占用题型4执行时间题型4内存占用题型5执行时间题型5内存占用10.00058423434880.00046027402960.00022628755200.00020232986000.000506380902420.00056923434880.00047027402960.00023928755200.00025332986000.000737380902430.00058428316560.00047232284640.00024433636880.00020337867680.000558429719240.00063728321040.00050632289120.00037133641360.00019237872160.000492429764050.00057128321040.00047932289120.00023433641360.00020337872160.000502429764060.00059428321040.00047532289120.00023533641360.00022637872160.000491429764070.00061228321040.00052932289120.00024133641360.00033837872160.000785429764080.00057928321040.00053832289120.00023933641360.00020337872160.000484429764090.00058823434880.00048327402960.00024128755200.00019032986000.0005063809024100.00058928316560.00051632284640.00023933636880.00019337867680.0004914297192
循环内判断
foreach ($result as $k $row) {if (!empty($score)) {$row[questionscore] $score;}if (!empty($israndomoption)) {$row[questionoption] $this-l_char-json_to_array($row[questionoption]);$row[questionoption] $this-_random_option($row[questionoption]);}$result[$k] $row;
}某题型有2题
次数执行时间内存占用10.000016153950420.000015154335230.000015154325640.000017154325650.000016154335260.000016154325670.000017154325680.000016154325690.0000141543256100.0000161547072
某题型有20题
次数执行时间内存占用10.000027155124820.000026156021630.000037156063240.000027156063250.000025156063260.000026156063270.000028156063280.000026156063290.0000261560632100.0000271560632
某题型有50题
次数执行时间内存占用10.000094180580820.000079186802430.000081186844040.000080186844050.000076186844060.000081186844070.000078186844080.000089186844090.0000791868440100.0000871868440
每题题型数量不限
次数题型1执行时间题型1内存占用题型2执行时间题型2内存占用题型3执行时间题型3内存占用题型4执行时间题型4内存占用题型5执行时间题型5内存占用10.00067623434800.00057327402880.00026628755120.00024632985920.000578380901620.00059028316320.00049832284400.00029333636640.00022037867440.000566429716830.00060828320800.00048932288880.00023133641120.00021337871920.000541429761640.00064328320800.00052632288880.00023633641120.00020837871920.000536429761650.00059028320800.00047832288880.00024433641120.00020537871920.000578429761660.00068228320800.00048932288880.00023733641120.00020937871920.000563429761670.00071328320800.00052632288880.00024133641120.00041637871920.000512429761680.00062123434640.00047727402720.00024028754960.00021232985760.000514380900090.00059628316320.00048932284400.00023433636640.00020537867440.0006244297168100.00061228320800.00047232288880.00024833641120.00020737871920.0005264297616
函数内判断
$result array_map(function ($row) use ($score, $israndomoption) {if (!empty($score)) {$row[questionscore] $score;}if (!empty($israndomoption)) {$row[questionoption] $this-l_char-json_to_array($row[questionoption]);$row[questionoption] $this-_random_option($row[questionoption]);}return $row;
}, $result);某题型有2题
次数执行时间内存占用10.000024153716020.000021154100830.000018154091240.000018154091250.000018153716060.000019154100870.000019154091280.000017154091290.0000201540912100.0000181540912
某题型有20题
次数执行时间内存占用10.000033154890420.000031155787230.000028155828840.000043155828850.000030155828860.000031155828870.000032155828880.000033155828890.0000301558288100.0000321558288
某题型有50题
次数执行时间内存占用10.000084180346420.000085186568030.000081186609640.000141186609650.000081186609660.000139186609670.000091186609680.000080180346490.0000801865680100.0000851803464
每题题型数量不限
次数题型1执行时间题型1内存占用题型2执行时间题型2内存占用题型3执行时间题型3内存占用题型4执行时间题型4内存占用题型5执行时间题型5内存占用10.00064223411040.00052427379120.00044628731360.00023132962160.000543380664020.00063128292720.00051832260800.00043333613040.00022437843840.000517429480830.00062928297200.00050632265280.00023933617520.00021537848320.000659429525640.00060828297200.00049032265280.00025133617520.00022937848320.000520429525650.00064628297200.00053732265280.00024133617520.00023137848320.000801429525660.00061028297200.00049232265280.00024933617520.00023237848320.000531429525670.00064028297200.00048432265280.00025733617520.00030037848320.000544429525680.00058728297200.00050032265280.00038833617520.00022937848320.000527429525690.00065728297200.00061032265280.00024633617520.00022437848320.0007674295256100.00060528297200.00049432265280.00024433617520.00022037848320.0005104295256
不同方法下数量不限时的平均值
方法题1时间题1内存题2时间题2内存题3时间题3内存题4时间题4内存题5时间题5内存判断后循环0.00059072685429.60.00049283082237.60.00025093217461.60.00022033640541.60.00055524150965.6循环内判断0.00063312734268.80.00050173131076.80.0002473266300.80.00023413689380.80.00055384199804.8函数内判断0.00062552780813.60.00051553177621.60.00029943312845.60.00023353735925.60.00059194246349.6
结论
方法2题平均执行时间2题平均内存占用20题平均执行时间20题平均内存占用50题平均执行时间50题平均内存占用数量不限平均执行时间数量不限平均内存占用判断后循环0.00001811542914.40.00002815596760.00008161862159.20.000421983355327.2循环内判断0.00001581543281.60.000027515596520.00008241862135.20.000433943404166.4函数内判断0.00001921540180.80.000032315573080.00009471847223.20.000453163450711.2
基本和以前版本的结论一致
在数量少的时候循环内判断速度最快函数内判断内存占用最少在数量有所提升后判断后循环速度最快函数内判断内存占用最少在数量上到一定量后判断后循环速度最快并且其内存占用也是最少。
如果字符量较少不同方法所带来的损耗在一般应用中可以忽略