PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)
十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想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题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000015 | 1539528 |
| 2 | 0.000017 | 1543376 |
| 3 | 0.000015 | 1543280 |
| 4 | 0.000015 | 1543280 |
| 5 | 0.000016 | 1543280 |
| 6 | 0.000016 | 1543280 |
| 7 | 0.000017 | 1543280 |
| 8 | 0.000038 | 1543280 |
| 9 | 0.000017 | 1543280 |
| 10 | 0.000015 | 1543280 |
某题型有20题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000026 | 1551272 |
| 2 | 0.000025 | 1560240 |
| 3 | 0.000026 | 1560656 |
| 4 | 0.000027 | 1560656 |
| 5 | 0.000027 | 1560656 |
| 6 | 0.000044 | 1560656 |
| 7 | 0.000026 | 1560656 |
| 8 | 0.000027 | 1560656 |
| 9 | 0.000026 | 1560656 |
| 10 | 0.000026 | 1560656 |
某题型有50题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000080 | 1805832 |
| 2 | 0.000078 | 1868048 |
| 3 | 0.000076 | 1868464 |
| 4 | 0.000077 | 1868464 |
| 5 | 0.000085 | 1868464 |
| 6 | 0.000078 | 1868464 |
| 7 | 0.000084 | 1868464 |
| 8 | 0.000087 | 1868464 |
| 9 | 0.000088 | 1868464 |
| 10 | 0.000083 | 1868464 |
每题题型数量不限
| 次数 | 题型1执行时间 | 题型1内存占用 | 题型2执行时间 | 题型2内存占用 | 题型3执行时间 | 题型3内存占用 | 题型4执行时间 | 题型4内存占用 | 题型5执行时间 | 题型5内存占用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.000584 | 2343488 | 0.000460 | 2740296 | 0.000226 | 2875520 | 0.000202 | 3298600 | 0.000506 | 3809024 |
| 2 | 0.000569 | 2343488 | 0.000470 | 2740296 | 0.000239 | 2875520 | 0.000253 | 3298600 | 0.000737 | 3809024 |
| 3 | 0.000584 | 2831656 | 0.000472 | 3228464 | 0.000244 | 3363688 | 0.000203 | 3786768 | 0.000558 | 4297192 |
| 4 | 0.000637 | 2832104 | 0.000506 | 3228912 | 0.000371 | 3364136 | 0.000192 | 3787216 | 0.000492 | 4297640 |
| 5 | 0.000571 | 2832104 | 0.000479 | 3228912 | 0.000234 | 3364136 | 0.000203 | 3787216 | 0.000502 | 4297640 |
| 6 | 0.000594 | 2832104 | 0.000475 | 3228912 | 0.000235 | 3364136 | 0.000226 | 3787216 | 0.000491 | 4297640 |
| 7 | 0.000612 | 2832104 | 0.000529 | 3228912 | 0.000241 | 3364136 | 0.000338 | 3787216 | 0.000785 | 4297640 |
| 8 | 0.000579 | 2832104 | 0.000538 | 3228912 | 0.000239 | 3364136 | 0.000203 | 3787216 | 0.000484 | 4297640 |
| 9 | 0.000588 | 2343488 | 0.000483 | 2740296 | 0.000241 | 2875520 | 0.000190 | 3298600 | 0.000506 | 3809024 |
| 10 | 0.000589 | 2831656 | 0.000516 | 3228464 | 0.000239 | 3363688 | 0.000193 | 3786768 | 0.000491 | 4297192 |
循环内判断
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题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000016 | 1539504 |
| 2 | 0.000015 | 1543352 |
| 3 | 0.000015 | 1543256 |
| 4 | 0.000017 | 1543256 |
| 5 | 0.000016 | 1543352 |
| 6 | 0.000016 | 1543256 |
| 7 | 0.000017 | 1543256 |
| 8 | 0.000016 | 1543256 |
| 9 | 0.000014 | 1543256 |
| 10 | 0.000016 | 1547072 |
某题型有20题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000027 | 1551248 |
| 2 | 0.000026 | 1560216 |
| 3 | 0.000037 | 1560632 |
| 4 | 0.000027 | 1560632 |
| 5 | 0.000025 | 1560632 |
| 6 | 0.000026 | 1560632 |
| 7 | 0.000028 | 1560632 |
| 8 | 0.000026 | 1560632 |
| 9 | 0.000026 | 1560632 |
| 10 | 0.000027 | 1560632 |
某题型有50题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000094 | 1805808 |
| 2 | 0.000079 | 1868024 |
| 3 | 0.000081 | 1868440 |
| 4 | 0.000080 | 1868440 |
| 5 | 0.000076 | 1868440 |
| 6 | 0.000081 | 1868440 |
| 7 | 0.000078 | 1868440 |
| 8 | 0.000089 | 1868440 |
| 9 | 0.000079 | 1868440 |
| 10 | 0.000087 | 1868440 |
每题题型数量不限
| 次数 | 题型1执行时间 | 题型1内存占用 | 题型2执行时间 | 题型2内存占用 | 题型3执行时间 | 题型3内存占用 | 题型4执行时间 | 题型4内存占用 | 题型5执行时间 | 题型5内存占用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.000676 | 2343480 | 0.000573 | 2740288 | 0.000266 | 2875512 | 0.000246 | 3298592 | 0.000578 | 3809016 |
| 2 | 0.000590 | 2831632 | 0.000498 | 3228440 | 0.000293 | 3363664 | 0.000220 | 3786744 | 0.000566 | 4297168 |
| 3 | 0.000608 | 2832080 | 0.000489 | 3228888 | 0.000231 | 3364112 | 0.000213 | 3787192 | 0.000541 | 4297616 |
| 4 | 0.000643 | 2832080 | 0.000526 | 3228888 | 0.000236 | 3364112 | 0.000208 | 3787192 | 0.000536 | 4297616 |
| 5 | 0.000590 | 2832080 | 0.000478 | 3228888 | 0.000244 | 3364112 | 0.000205 | 3787192 | 0.000578 | 4297616 |
| 6 | 0.000682 | 2832080 | 0.000489 | 3228888 | 0.000237 | 3364112 | 0.000209 | 3787192 | 0.000563 | 4297616 |
| 7 | 0.000713 | 2832080 | 0.000526 | 3228888 | 0.000241 | 3364112 | 0.000416 | 3787192 | 0.000512 | 4297616 |
| 8 | 0.000621 | 2343464 | 0.000477 | 2740272 | 0.000240 | 2875496 | 0.000212 | 3298576 | 0.000514 | 3809000 |
| 9 | 0.000596 | 2831632 | 0.000489 | 3228440 | 0.000234 | 3363664 | 0.000205 | 3786744 | 0.000624 | 4297168 |
| 10 | 0.000612 | 2832080 | 0.000472 | 3228888 | 0.000248 | 3364112 | 0.000207 | 3787192 | 0.000526 | 4297616 |
函数内判断
$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题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000024 | 1537160 |
| 2 | 0.000021 | 1541008 |
| 3 | 0.000018 | 1540912 |
| 4 | 0.000018 | 1540912 |
| 5 | 0.000018 | 1537160 |
| 6 | 0.000019 | 1541008 |
| 7 | 0.000019 | 1540912 |
| 8 | 0.000017 | 1540912 |
| 9 | 0.000020 | 1540912 |
| 10 | 0.000018 | 1540912 |
某题型有20题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000033 | 1548904 |
| 2 | 0.000031 | 1557872 |
| 3 | 0.000028 | 1558288 |
| 4 | 0.000043 | 1558288 |
| 5 | 0.000030 | 1558288 |
| 6 | 0.000031 | 1558288 |
| 7 | 0.000032 | 1558288 |
| 8 | 0.000033 | 1558288 |
| 9 | 0.000030 | 1558288 |
| 10 | 0.000032 | 1558288 |
某题型有50题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000084 | 1803464 |
| 2 | 0.000085 | 1865680 |
| 3 | 0.000081 | 1866096 |
| 4 | 0.000141 | 1866096 |
| 5 | 0.000081 | 1866096 |
| 6 | 0.000139 | 1866096 |
| 7 | 0.000091 | 1866096 |
| 8 | 0.000080 | 1803464 |
| 9 | 0.000080 | 1865680 |
| 10 | 0.000085 | 1803464 |
每题题型数量不限
| 次数 | 题型1执行时间 | 题型1内存占用 | 题型2执行时间 | 题型2内存占用 | 题型3执行时间 | 题型3内存占用 | 题型4执行时间 | 题型4内存占用 | 题型5执行时间 | 题型5内存占用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.000642 | 2341104 | 0.000524 | 2737912 | 0.000446 | 2873136 | 0.000231 | 3296216 | 0.000543 | 3806640 |
| 2 | 0.000631 | 2829272 | 0.000518 | 3226080 | 0.000433 | 3361304 | 0.000224 | 3784384 | 0.000517 | 4294808 |
| 3 | 0.000629 | 2829720 | 0.000506 | 3226528 | 0.000239 | 3361752 | 0.000215 | 3784832 | 0.000659 | 4295256 |
| 4 | 0.000608 | 2829720 | 0.000490 | 3226528 | 0.000251 | 3361752 | 0.000229 | 3784832 | 0.000520 | 4295256 |
| 5 | 0.000646 | 2829720 | 0.000537 | 3226528 | 0.000241 | 3361752 | 0.000231 | 3784832 | 0.000801 | 4295256 |
| 6 | 0.000610 | 2829720 | 0.000492 | 3226528 | 0.000249 | 3361752 | 0.000232 | 3784832 | 0.000531 | 4295256 |
| 7 | 0.000640 | 2829720 | 0.000484 | 3226528 | 0.000257 | 3361752 | 0.000300 | 3784832 | 0.000544 | 4295256 |
| 8 | 0.000587 | 2829720 | 0.000500 | 3226528 | 0.000388 | 3361752 | 0.000229 | 3784832 | 0.000527 | 4295256 |
| 9 | 0.000657 | 2829720 | 0.000610 | 3226528 | 0.000246 | 3361752 | 0.000224 | 3784832 | 0.000767 | 4295256 |
| 10 | 0.000605 | 2829720 | 0.000494 | 3226528 | 0.000244 | 3361752 | 0.000220 | 3784832 | 0.000510 | 4295256 |
不同方法下数量不限时的平均值
| 方法 | 题1时间 | 题1内存 | 题2时间 | 题2内存 | 题3时间 | 题3内存 | 题4时间 | 题4内存 | 题5时间 | 题5内存 |
|---|---|---|---|---|---|---|---|---|---|---|
| 判断后循环 | 0.0005907 | 2685429.6 | 0.0004928 | 3082237.6 | 0.0002509 | 3217461.6 | 0.0002203 | 3640541.6 | 0.0005552 | 4150965.6 |
| 循环内判断 | 0.0006331 | 2734268.8 | 0.0005017 | 3131076.8 | 0.000247 | 3266300.8 | 0.0002341 | 3689380.8 | 0.0005538 | 4199804.8 |
| 函数内判断 | 0.0006255 | 2780813.6 | 0.0005155 | 3177621.6 | 0.0002994 | 3312845.6 | 0.0002335 | 3735925.6 | 0.0005919 | 4246349.6 |
结论
| 方法 | 2题平均执行时间 | 2题平均内存占用 | 20题平均执行时间 | 20题平均内存占用 | 50题平均执行时间 | 50题平均内存占用 | 数量不限平均执行时间 | 数量不限平均内存占用 |
|---|---|---|---|---|---|---|---|---|
| 判断后循环 | 0.0000181 | 1542914.4 | 0.000028 | 1559676 | 0.0000816 | 1862159.2 | 0.00042198 | 3355327.2 |
| 循环内判断 | 0.0000158 | 1543281.6 | 0.0000275 | 1559652 | 0.0000824 | 1862135.2 | 0.00043394 | 3404166.4 |
| 函数内判断 | 0.0000192 | 1540180.8 | 0.0000323 | 1557308 | 0.0000947 | 1847223.2 | 0.00045316 | 3450711.2 |
基本和以前版本的结论一致:
- 在数量少的时候,
循环内判断速度最快,函数内判断内存占用最少; - 在数量有所提升后,
判断后循环速度最快,函数内判断内存占用最少; - 在数量上到一定量后,
判断后循环速度最快,并且其内存占用也是最少。
如果字符量较少,不同方法所带来的损耗在一般应用中可以忽略;

相关文章:
PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)
十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目…...
【Seata源码学习 】 扫描@GlobalTransaction注解 篇一
1. SeataAutoConfiguration 自动配置类的加载 基于SpringBoot的starter机制,在应用上下文启动时,会加载SeataAutoConfiguration自动配置类 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.aut…...
DBA-MySql面试问题及答案-上
文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎?6.可以针对表设置引擎吗?如何设置?6.选择合适的存储引擎?7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…...
网络爬虫之Ajax动态数据采集
动态数据采集 规则 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面教据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档…...
c语言的初始学习(练习)
##初学c语言---MOOC浙江大学翁恺先生学习c语言 那么我们先看看这个题目吧,这是初始语法的应用。 记住,我们的程序是按步骤执行的,并不是在不同的两行同时进行。 程序设计:1.了解题目的需要,几个变量需要用到&#x…...
研究论文 2022-Oncoimmunology:AI+癌RNA-seq数据 识别细胞景观
Wang, Xin, et al. "Deep learning using bulk RNA-seq data expands cell landscape identification in tumor microenvironment." Oncoimmunology 11.1 (2022): 2043662. https://www.tandfonline.com/doi/full/10.1080/2162402X.2022.2043662 被引次数࿱…...
ChatGPT4与ArcGIS Pro3助力AI 地理空间分析和可视化及助力科研论文写作
在地学领域,ArcGIS几乎成为了每位科研工作者作图、数据分析的必备工具,而ArcGIS Pro3除了良好地继承了ArcMap强大的数据管理、制图、空间分析等能力,还具有二三维融合、大数据、矢量切片制作及发布、任务工作流、时空立方体等特色功能&#x…...
okhttp系列-一些上限值
1.正在执行的任务数量最大值是64 异步请求放入readyAsyncCalls后,遍历readyAsyncCalls取出任务去执行的时候,如果发现runningAsyncCalls的数量大于等于64,就不从readyAsyncCalls取出任务执行。 public final class Dispatcher {private int …...
C++面向对象(OOP)编程-STL详解(vector)
本文主要介绍STL六大组件,并主要介绍一些容器的使用。 目录 1 泛型编程 2 CSTL 3 STL 六大组件 4 容器 4.1 顺序性容器 4.1.1 顺序性容器的使用场景 4.2 关联式容器 4.2.1 关联式容器的使用场景 4.3 容器适配器 4.3.1 容器适配器的使用场景 5 具体容器的…...
postman几种常见的请求方式
1、get请求直接拼URL形式 对于http接口,有get和post两种请求方式,当接口说明中未明确post中入参必须是json串时,均可用url方式请求 参数既可以写到URL中,也可写到参数列表中,都一样,请求时候都是拼URL 2&am…...
openai最新探索:超级对齐是否可行?
前言 今天来介绍一篇openai最新的paper:弱到强的对齐。 openai专门成立了一个团队来做大模型的超级对齐即superhuman model,之前chatgpt取得成功依赖RLHF即依赖人类反馈,但是作者期望的superhuman model将会是一个能够处理各种复杂问题的强…...
本地websocket服务端结合cpolar内网穿透实现公网访问
文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…...
关于“Python”的核心知识点整理大全37
目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva…...
Vivado中的FFT IP核使用(含代码)
本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilogHDL>>TestBench仿真>>结果验证>>FFT运算。 1、调用IP核 该IP核对应手册pg109_xfft.pd…...
创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开,吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果,引发与会者热烈关注。 re:Invent的核心主题是…...
什么是“人机协同”机器学习?
“人机协同”(HITL)是人工智能的一个分支,它同时利用人类智能和机器智能来创建机器学习模型。在传统的“人机协同”方法中,人们会参与一个良性循环,在其中训练、调整和测试特定算法。通常,它的工作方式如下…...
数学建模笔记-拟合算法
内容:拟合算法 一.概念: 拟合的结果就是找到一个确定的曲线 二.最小二乘法: 1. 2.最小二乘法的二表示的是平方的那个2 3.求解最小二乘法: 三.评价拟合的好坏 1.总体评分和SST: 2.误差平方和SSE: 3.回…...
非线性约束的优化问题_序列二次规划算法代码
1. 理论部分 2. 序列二次规划算法代码及解析 3.完整代码 1.理论部分 a.约束优化问题的极值条件 库恩塔克条件(Kuhn-Tucker conditions,KT条件)是确定某点为极值点的必要条件。如果所讨论的规划是凸规划,那么库恩-塔克条件也是充分条件。 ÿ…...
【数据结构之顺序表】
数据结构学习笔记---002 数据结构之顺序表1、介绍线性表1.1、什么是线性表? 2、什么是顺序表?2.1、概念及结构2.2、顺序表的分类 3、顺序表接口的实现3.1、顺序表动态存储结构的Seqlist.h3.1.1、定义顺序表的动态存储结构3.1.2、声明顺序表各个接口的函数 3.2、顺序表动态存储…...
junit-mock-dubbo
dubbo单元测试分两种情况 Autowired注解是启动上下文环境,使用上下文对象进行测试,适合调试代码 InjectMocks注解是启动上下文环境,使用mock对象替换上下文对象,适合单元测试 BaseTest *** Created by Luohh on 2023/2/10*/ S…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器
从本章节开始,进入到函数有多个参数的情况,前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参,ECX是整型的第一个参数的寄存器,那么多个参数的情况下函数如何传参,下面展开介绍参数为整型时候的几种情…...
STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
文章目录 PWRPWR(电源控制模块)核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤:宏定义配置三、程序流程:时钟配置函数解析四、注意…...
多模态大语言模型arxiv论文略读(112)
Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题:Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者:Jea…...
前端异步编程全场景解读
前端异步编程是现代Web开发的核心,它解决了浏览器单线程执行带来的UI阻塞问题。以下从多个维度进行深度解析: 一、异步编程的核心概念 JavaScript的执行环境是单线程的,这意味着在同一时间只能执行一个任务。为了不阻塞主线程,J…...
