优化条件/if 块,从性能的角度来看,啥是可取的?

     2023-02-24     128

关键词:

【中文标题】优化条件/if 块,从性能的角度来看,啥是可取的?【英文标题】:Optimizing conditionals/if blocks, what is preferable from a performance point of view?优化条件/if 块,从性能的角度来看,什么是可取的? 【发布时间】:2015-12-13 10:41:24 【问题描述】:

我正在编写一个 JS 库,但有两件事在我的脑海中已经有很长一段时间了。

考虑一个选项:

var option =  bool : true  ;

现在,想象一下我会这样做

if(option.bool) 

      or

if(option.bool === true) 

第一种情况,尽管知道它是真假,但我想它相当于:

var tmp = options.bool;
if ( tmp !== undefined && tmp !== null && ( tmp === true || tmp ... ) 

这意味着要尝试 options.bool = true,它必须在测试 true 之前检查 undefined 和 not null。

因此,后一种情况应该更高效。但是,后一种情况需要更多的字符,如果重复多次,会导致更大的库。

但也许我的理解是不正确的。

现在,即使我这样做:

var bool = window.t ? true : false; 

if ( bool === true ) // I still have to check for true to 'have the optmimal version'?

也许最后一种情况可以由编译器优化,但是当它是一个全局选项我想它会有所不同?

请与我分享您对此的看法。

【问题讨论】:

JavaScript performance difference between double equals (`==`) and triple equals (`===`) 的可能重复项 如果您真的要询问if(option.bool)if(option.bool === true) 之间的性能差异,那么所有性能问题的答案都是运行一个代表您特别感兴趣的环境的测试。jsperf是进行此类测试的绝佳工具。没有实际测试结果的推测通常是错误的。 @jfriend00 我只想知道我的编码模式应该是什么。我曾经有很多 if ( object ),但后来我将其更改为严格相等,但它总共导致了更多的字符。我不确定对这种性质的简单测试是否能帮助我弄清楚,我想知道什么是好的做法。 如果您知道option.bool 仅包含truefalse,或者如果您愿意接受任何真实值,那么 if (option.bool) 是一个非常好的做法。我认为没有理由做if (option.bool === true),除非您认为option.bool 可能具有非真/假值,并且您想从if 语句中消除任何其他可能的真实值。 好的,知道了。例如,可能返回未定义的方法,或者一个和对象 并执行 if ( tmp = method() );如果它未定义,它将立即失败,但如果不是,它将检查它是否是一个字符串并且长度 > 0 .. 一个大于零的数字。这也是另一个问题。 【参考方案1】:

答案很简单。与其说是编码模式,不如说是逻辑。 在这种情况下,总是有 3 种可能性,您需要满足每一种可能性。 IE。 1. 正确 2. 错误 3. 未定义 如果该值未定义,那么您希望它属于 true 还是 false 子句?还是应该以不同的方式迎合?

要记住的另一件重要的事情是,如果它未定义,那么它将始终执行 false 子句中的代码。这就是你想要的吗?

如果您知道该值将始终为 true 或 false,那么我建议您仍然使用语法 == true,因为这样更具可读性。浏览代码的人会知道您正在寻找布尔值,而不是测试该字段是否已设置。

每次你在 if 语句中有一个布尔值时,你都必须考虑这 3 种情况,所以没有一个适合你的答案。

【讨论】:

Netezza - 从 SQL 的角度来看,啥是托管?

】Netezza-从SQL的角度来看,啥是托管?【英文标题】:Netezza-WhatiscolocationintheperspectiveofSQL?Netezza-从SQL的角度来看,什么是托管?【发布时间】:2015-04-1022:33:51【问题描述】:我知道托管对于Netezza中的分布式连接很重要。在高层次... 查看详情

从性能角度来看 MongoDB 嵌入式与参考

】从性能角度来看MongoDB嵌入式与参考【英文标题】:MongoDBembeddedvs.referencefromperformanceperspective【发布时间】:2011-09-1418:32:32【问题描述】:我读到从性能的角度来看嵌入更好:“如果性能是一个问题,嵌入。”(http://www.mongodb.org/... 查看详情

if-else与switch

对于条件分支语句,在设计条件的时候,需要考虑实际执行情况,才能提高效率,可以参考之前的博客:https://www.cnblogs.com/pinking/p/9159931.html现在主要讨论if-else与switch之间的区别从执行效率角度来看:对于if-else,至少执行if,这... 查看详情

前端性能优化

一、前端优化是什么,目的何在?   网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等。而前端呢?其实应该是属于功能的表现。并且... 查看详情

前端性能优化

...HTML、CSS、Javascript、Image、Flash等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么?  1.从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能... 查看详情

前端性能优化(转)

...HTML、CSS、Javascript、Image、Flash等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么?  1.从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能... 查看详情

一万个if..........else....语句,请问如何去优化它。。。。以提升性能效率

我理解你的问题是嵌套的ifelse层次太深了,是吧?如果是这样,考虑用数组把条件存起来,排好序,用二分查找找到满足的条件,然后根据函数指针调函数。每个分支做个函数。也许好用。呵呵。1万次判断,比一次函数调用开... 查看详情

当面试官问你:如何进行性能优化?

...。所以面试时,面试官总会问你一个问题,如何进行性能优化呢?性能优化是什么从前端的角度来说,性能优化可以分为两个方向。从用户角度来看,一个是页面加载的很快,另一个是页面使用起来很流畅。因此,对性能优化的... 查看详情

函数局部静态变量:从性能角度看的优缺点

】函数局部静态变量:从性能角度看的优缺点【英文标题】:Functionlocalstaticvariables:pros/consfromperformancepointofview【发布时间】:2019-12-1616:49:35【问题描述】:函数局部静态变量纯粹从性能的角度来看有哪些优点/缺点?这是一个例... 查看详情

hive性能优化(全面)

...下会衍生哪些问题?面对这些问题,我们能有哪些有效的优化手段呢?下面列出一些在工作有效可行的优化手段:而接下来,我们心中应该会有一些疑问,影响性能的根源是什么?2.性能低下的根源hive性能优化时,把HiveQL当做M/R... 查看详情

前端性能优化方案都有哪些?

...HTML、CSS、Javascript、Image、Flash等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么?  1.从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能... 查看详情

简单解释一下啥是MinGW

...MinGW和GCC有点困惑。这是我的问题(从一个真正的假人的角度来看):所以Python是一种既可解释又可编译的语言。有Python的Linu 查看详情

POST 数千个变量与长 JSON 字符串:啥是可取的? [关闭]

】POST数千个变量与长JSON字符串:啥是可取的?[关闭]【英文标题】:POSTthousandsofvarsvs.alongJSONstring:whatispreferrable?[closed]POST数千个变量与长JSON字符串:什么是可取的?[关闭]【发布时间】:2013-10-0704:07:14【问题描述】:我需要将大... 查看详情

当条件为假时执行 If 语句 True 块

...itionisFalse【发布时间】:2012-02-1500:19:05【问题描述】:我优化了一个扩展方法来比较两个流的相等性(字节对字节)-知道这是一种热门方法,我尝试尽可能优化它(流可以达到数兆字节的长度)。我基本上想出了以下方法:[Stru... 查看详情

从html到组件的角度条件?

】从html到组件的角度条件?【英文标题】:Angularifconditionfromhtmltocomponent?【发布时间】:2019-04-0211:50:01【问题描述】:我在Angular中遇到了一个非常新的问题:我想在一个表中创建多个过滤器。所以为了实现这一点,我想在输入... 查看详情

性能优化常用工具及经验(代码片段)

...而性能问题,其排查思路更为复杂一些。对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用,它不仅包含了应用代码本身,还和容器(虚拟机)、操作系统、存储、网络、... 查看详情

性能优化observabilitytoolsc++:beyondgdbandprintf-toolstounderstandthebehavior...-知识点目录

ObservabilityToolsC++:BeyondGDBandprintf-ToolstoUnderstandtheBehaviorofYourProgram1.Speedscope(functioncallanalysis)支持多种编程语言:PythonC++2.Heapprofilers,e.g.Heaptrack分析if条件块是否是likely的-[22:05]条件判断执行了1862次,而true分支仅执... 查看详情

从测试角度分析—导致系统性能达到瓶颈的主要因素有哪些?

...三、sql语句执行过慢  可以通过慢查询日志,确定需要优化的sql语句(可以使用索引优化sql语句的执行效率)  1.避免查询*(所有)列,通过指定字段的查询方式进行查询  2.优先使用select....into,然后使用insert....into,避... 查看详情