Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用更多的<?php标记会降低效率吗?

使用更多的<?php标记会降低效率吗?
EN

Stack Overflow用户
提问于 2013-01-24 15:56:53
回答 4查看 115关注 0票数 1

我一直是一个写干净可读的代码的人。尽管如此,我仍然无法确定在使用或多或少的<?php标记时,在处理速度上是否存在任何差异。下面是一些比较代码:

首选代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php while($condition): ?>
    <?php if($anotherCondition): ?>
        Hello world!
    <?php endif; ?>
<?php endwhile; ?>

较短代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php while($condition):
    if($anotherCondition): ?>
        Hello world!
    <?php endif;
endwhile; ?>

在第二段代码中,我只使用了两个<?php标记,但是我发现第一个代码块更容易理解。因为我使用了更多的<?php标签,所以效率下降了吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-24 16:05:10

这对性能有影响,但很可能可以忽略不计。任何不在<?php ?>块内的空间或选项卡都将作为PHP输出的一部分发送。要理解这一点,请考虑以下简单的示例:

PHP代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php while($condition): ?>
    <?php if($anotherCondition): ?>
        Hello world!
    <?php endif; ?>
<?php endwhile; ?>

被发送到电线上,如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\n
\t\n
\t\tHello world!\n
\t\n
\n

而这个PHP:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php while($condition):
    if($anotherCondition): ?>
        Hello world!
    <?php endif;
endwhile; ?>

返回以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\n
\t\tHello world!\n
\n

不过,这并不是你真正想要担心的事情,我说的是去读可读的代码。不过,我要说的是,您的第一个示例需要大量额外的输入,您确定这样做更好吗?

票数 3
EN

Stack Overflow用户

发布于 2013-01-24 15:59:59

没有语法问题会影响性能,所以编写可读的代码:)

您的第二个示例也是可读的,没有理由使用4而不是2 php块。

票数 3
EN

Stack Overflow用户

发布于 2013-01-24 18:13:42

我测试了您的2种代码+1无空间版本,通过在代码前引入$time_start = microtime(true);和代码后引入echo $time = microtime(true) - $time_start;来检查处理速度。

由于处理时间接近微秒,结果可能因许多微小因素而异。因此,我测试了每段代码10次,并做了一个平均时间。

用打印文本进行测试

优先使用代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php $time_start = microtime(true); ?>

<?php $i = 0; ?>
<?php while($i <= 5000): ?>
<?php echo $i; ?>
<?php $i++; ?>
    <?php if($i == 5000): ?>
        This is the end! 
    <?php endif; ?>
<?php endwhile; ?>

<?php echo $time = microtime(true) - $time_start; ?>

平均时间: 0.00366528034210207秒

短码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

    $time_start = microtime(true);

    $i = 0;
    while($i <= 5000):
        echo $i." ";
        $i++;
        if($i == 5000):
            echo "This is the end!";
        endif;
    endwhile;

    echo $time = microtime(true) - $time_start;

?>

平均时间: 0.00243649482727052秒

空间-无空间代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php $time_start=microtime(true);$i=0;while($i<=5000):echo $i." ";$i++;if($i==5000):echo "This is the end!";endif;endwhile;echo$time=microtime(true)-$time_start;?>

平均时间: 0.00242624282836913秒

没有打印文本的测试

优先使用代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php $time_start = microtime(true); ?>

<?php $i = 0; ?>
<?php while($i <= 5000): ?>
    <?php $i++; ?>
    <?php if($i == 5000): ?>
        <?php $a=$i; ?>
    <?php endif; ?>
<?php endwhile; ?>

<?php echo $time = microtime(true) - $time_start; ?>

平均时间: 0.00143785476684571秒

短码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

    $time_start = microtime(true);

    $i = 0;
    while($i <= 5000):
        $i++;
        if($i == 5000):
            $a=$i;
        endif;
    endwhile;

    echo $time = microtime(true) - $time_start;

?>

平均时间: 0.000472831726074218秒

空间-无空间代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php $time_start=microtime(true);$i=0;while($i<=5000):;$i++;if($i==5000):$a=$i;endif;endwhile;echo$time=microtime(true)-$time_start;?>

平均时间: 0.000457286834716797秒

结论/摘要

带有打印文本的

首选代码: 0.00366528034210207秒

较短的代码: 0.00243649482727052秒(比以前快33.5%)

无空间代码: 0.00242624282836913秒(比以前快0.4%)

不打印文本

首选代码: 0.00143785476684571秒

较短的代码: 0.000472831726074218秒(比以前快66.1%)

无空间代码: 0.000457286834716797秒(比以前快3.3%)

平均10倍是不正确的。它应该做100或1000次,删除极值的结果,以获得一个相当好的表示。但是通过这个简单的例子,我们可以看到两个第一个代码之间的显着差异,第三个代码是没有意义的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14513061

复制
相关文章
用Python进行单元测试
Python编程语言,不仅仅在机器学习、数据分析等领域大放异彩,在web开发中等软件开发中,使用者也越来越多。
老齐
2021/04/19
3.2K0
用Python进行单元测试
对 React 组件进行单元测试
前端开发的一个特点是更多的会涉及用户界面,当开发规模达到一定程度时,几乎注定了其复杂度会成倍的增长。
江米小枣
2020/06/16
4.3K0
用MockMvc对Spring mvc中的controller层进行单元测试
参考:http://sishuok.com/forum/posts/list/7981.html  ;  http://www.tuicool.com/articles/6nqeIbm
克虏伯
2019/04/15
2.6K0
[译] 对 Vue-Router 进行单元测试
原文:https://medium.com/js-dojo/unit-testing-vue-router-1d091241312
江米小枣
2020/06/15
2.2K0
如何对机器学习代码进行单元测试?
本文介绍了一种用于机器学习代码的单元测试方法,通过生成数据输入、模型推理、损失计算和优化等步骤,来确保每个组件只在一个步骤中起作用。作者还提供了相应的测试用例和代码示例,以帮助读者更好地理解单元测试的实现过程。同时,作者也提醒读者,单元测试并非万能的,需要结合其他测试方法来全面评估机器学习代码的性能和正确性。
企鹅号小编
2018/01/09
2.5K0
如何对机器学习代码进行单元测试?
如何对 Jenkins 共享库进行单元测试
Jenkins 共享库是除了 Jenkins 插件外,另一种扩展 Jenkins 流水线的技术。通过它,可以轻松地自定义步骤,还可以对现有的流水线逻辑进行一定程度的抽象与封装。至于如何写及如何使用它,读者朋友可以移步附录中的官方文档。
LinuxSuRen
2019/05/29
2.2K0
ASP.NET Core 对Controller进行单元测试
单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对Controller写过测试的。今天来演示下如果对Controller进行单元测试。以下内容默认您对单元测试有所了解,比如如何mock一个接口。在这里多叨叨一句,面向接口的好处,除了能够快速的替换实现类(其实大部分接口不会有多个实现),最大的好处就是可以进行mock,可以进行单元测试。
MJ.Zhou
2020/06/23
2K0
对 WordPress 主题进行单元测试(Theme Unit Test)
在制作 WordPress 的过程中,除了对整体的结构等进行排版布局等,还必须要对正文的内容和其他地方进行修饰和排版,例如正文中可能出现的 标题(h2、h3)、列表(ul、ol)、表格(table) 以及不同的文章类型效果等等。这就是 WordPress 主题的单元测试(Theme Unit Test)。
Denis
2023/04/15
1.9K0
用程序对hdfs进行操作。
调试加安装了半天,怎么也没有配置好怎么通过Eclipse直接连接hdfs,最后我还是打成一个jar包放到Linux虚拟机中执行的。
用户5166556
2019/04/16
4620
用QUnit对Razor进行测试
Given how central JavaScript is to many modern web applications,  it is important to use unit tests to drive the design and quality of that JavaScript. But I’ve noticed that there are a lot of developers that don’t know where to start.
javascript.shop
2019/09/04
6350
用QUnit对Razor进行测试
如何对Spring MVC中的Controller进行单元测试
对Controller进行单元测试是Spring框架原生就支持的能力,它可以模拟HTTP客户端发起对服务地址的请求,可以不用借助于诸如Postman这样的外部工具就能完成对接口的测试。 具体来讲,是由Spring框架中的spring-test模块提供的实现,详见MockMvc。
编程随笔
2022/04/29
2.3K0
用LogParser对IIS 日志进行分析
LogParser 是一个命令行工具,可以通过SQL 语句对日志进行分析统计,LogParser功能非常的强大,不但可以分析IIS日志,还可以分析系统事件日志,CSV,XML等格式日志,同时LogParser还支持编程接口,LogParser的帮助文档里自带了一个使用C#查询系统日志的例子。下面给出LogParser的下载地址。 基本的用法如下: LogParser –i:输入文件的格式 –o:输出格式 “SQL语句” 例如下面的例子是用Log Parser统计访问整个IIS站点的IP,及访问次数: log
张善友
2018/01/30
1.9K0
如何对类中的protected方法进行单元测试
也许很多同学写单元测试时遇到这样的问题,一个类方法是 protected ,如何测呢 ? 当然,你可以说把 protected 改成 public 就可测了!没错,是可测了,可是 ......
跑马溜溜的球
2020/12/07
4K0
用Prometheus对业务服务进行监控
这里分享一个用于黑盒监控的blackbox_exporter, 可以用于对http,https,tcp,dns以及ICMP协议进行探测,从而抓取数据进行监控。但是,这些对于我们来说究竟能解决什么用处。
公众号: 云原生生态圈
2021/11/15
1.7K0
用Prometheus对业务服务进行监控
用ranger对hive metastore 进行授权管理
hive standalone metastore 3.1.2可作为独立服务,作为spark、flink、presto等服务的元数据管理中心,然而在现有的hive授权方案中只有针对hiveserver2的授权,所以本文针对hive standalone metastore独立服务使用ranger对连接到hive metastore的用户进行授权访问,以解决hive standalone metastore无权限验证问题。
从大数据到人工智能
2022/01/15
1.8K0
用ranger对hive metastore 进行授权管理
用Python对MySQL同步状态进行监
使用Python对MySQL数据库服务器是否可访问,及主从同步是否中断进行监控,是一件非常简单的事情。感谢Python给我们带来了如此简单,强大,快捷的开发环境。
py3study
2020/01/08
9700
点击加载更多

相似问题

用Jest对EventEmitter进行单元测试

13

用MrUnit对作业进行单元测试

12

用ICommand对NSubstitute进行单元测试

11

用超时对HttpClient进行单元测试

10

用Rebus对CorrelationId进行单元测试

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文