- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我学习 C 和汇编的那一天,我们被教导最好使用简单的比较来提高速度。例如,如果你说:
if(x <= 0)
对比
if(x < 1)
哪个执行得更快?我的论点(可能是错误的)是第二个几乎总是执行得更快,因为只有一个比较)即它是否小于一个,是或否。
如果数字小于 0,第一个将执行得很快,因为这等于 true,因此无需检查是否等于第二个,但是,如果数字为 0 或更多,因为它必须进行第二次比较以查看它是否等于 0。
我现在正在使用 C#,虽然为桌面开发速度不是问题(至少不是他的观点值得争论的程度),但我仍然认为需要考虑这些争论,因为我也在为移动设备开发其功能远不如台式机,速度确实成为此类设备的问题。
为了进一步考虑,我说的是整数(没有小数)和不能有负数的数字,如 -1 或 -12,345 等(除非有错误),例如,当你不能有负数的项目但你想检查列表是否为空时处理列表或数组时(或者如果有问题,将 x 的值设置为负值以指示错误,一个例子是是列表中的一些项目,但由于某种原因您无法检索整个列表,为了表明这一点,您将数字设置为负数,这与说没有项目不同)。
出于上述原因,我故意忽略了明显的部分
if(x == 0)
和
if(x.isnullorempty())
和其他用于检测没有项目的列表的项目。
同样,出于考虑,我们正在讨论从数据库中检索项目的可能性,也许使用具有上述功能的 SQL 存储过程(即标准(至少在这家公司)是返回一个负数来表示问题)。
那么在这种情况下,使用上面的第一项还是第二项更好呢?
最佳答案
它们是相同的。两者都不比对方快。他们都问完全相同的问题,假设 x
是一个整数。 C# 不是汇编。您要求编译器生成最佳代码以获得您要求的效果。您没有指定它如何获得该结果。
另见 this answer .
My argument (which may be wrong) is the second would almost always execute faster because there is only a single comparison) i.e. is it less than one, yes or no.
显然这是错误的。如果您假设这是真的,请观察会发生什么:
<
比 <=
快因为它问的问题更少。 (你的论点。)
>
与 <=
的速度相同因为它问的是同一个问题,只是答案倒过来了。
因此 <
比 >
快!但同样的论点显示>
比 <
快.
"just with an inverted answer" seems to sneak in an additional boolean operation so I'm not sure I follow this answer.
出于同样的原因,这是错误的(对于硅,有时对于软件是正确的)。考虑:
3 != 4
比 3 == 4
的计算成本更高,因为它是 3 != 4
有一个相反的答案,一个额外的 bool 运算。
3 == 4
比3 != 4
贵,因为它是 3 != 4
有一个相反的答案,一个额外的 bool 运算。
因此,3 != 4
比自己贵。
反向答案只是相反的问题,而不是额外的 bool 运算。或者,更准确地说,它是将比较结果与最终答案进行不同的映射。两者 3 == 4
和 3 != 4
要求您比较 3 和 4。该比较导致以太“相等”或“不相等”。这些问题只是将“相等”和“不相等”映射到“真”和“假”的不同方式。两种映射都不比另一种更昂贵。
关于c# - 哪个性能更高 : <= 0 or <1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384367/
我有一个 DIV #page,如果我在顶部添加边距,突然出现一个滚动条,即使该元素不大于主体。我怎样才能去掉滚动条? (参见 Fiddle) 我的 HTML I am a div siz
function getClosestValue(standardArray, targetVal) { standardArray = standardArray.sort(function(a,
我有 318x424 的书籍封面图片,我想做的是指定一张图片,并在其下方添加一个文本链接。初始 src 是 about:blank,这样如果响应式设计不显示框架,它就不会占用用户带宽。 框架的 HTM
我被这个问题困了两天了,还是没搞定。 基本上,我有一个二维数组,其中包含某些数字(在给定范围内)之间的关系: 0 = 顺序无关紧要 1 = 第一个数字(左栏中的数字)应该是第一个 2 = 第二个数字(
只有当我在更高的 API 上进行调试时,我才会强制关闭脚本:16,但是当涉及到 API 时它工作正常:10。这可能是我的项目设置问题吗? 这是对服务器的简单请求,以获取 fragment 中的类别列表
给定下表books id | listorder ----+----------- 3 | 1 2 | 2 1 | 3 4 |
我想要那个密码切换功能,好像TextInputLayout有这个功能,而不是 TextInputEditText .但是正如您在下面的代码中看到的,即使我将高度设置为 wrap_content和 ap
似乎从 读取给出空列表,它主要发生在延迟较高的网络上的主机上。是否有更强大的与远程主机交互的方式? use Net::SSH2; # my $ssh = Net::SSH2->new(); # ..
为了在 Play 商店中发布我的应用程序,我必须将 TargetSdkVersion 从 23 更改为 26。在我更改它之前,该应用程序运行良好!现在应用程序在启动时崩溃。我想通了,问题出在这两行:
我尝试了很多解决方案,但找不到一个。我有 3 个不同的列,其中包含不同类型的文本,我需要它们具有相同的高度。但它们是这样不同的:colums有人可以帮忙吗? 代码: .col-sm-2{
我尝试将一个 div 相对于其具有负顶值的父级定位。这工作正常,现在的问题是这个 div,即使它有一个负的 top 值也会使父 div 更大。 我该怎么做才能让父 div 不那么大? Here's a
这是一个一般性问题,可能适用于任何给定的语言,如 C、C++、Java 等。 我认为无论以何种方式实现它,都不会比使用 2 个循环更高效,后者的效率为 n^2。 for(i=0;i O(1) ),要么
我需要查找所有有订单的家庭。我根本不关心订单的数据,只关心它的存在。 (使用 SQL Server) 这样说是不是更有效率: SELECT HouseholdID, LastName, FirstNa
我有一个 UINavigationController,在屏幕顶部有一个 UINavigationBar,在底部有一个 UIToolbar。我想让工具栏高一点。这是我的代码: CGRect toolb
我正在使用自定义字体。该字体在我的 Windows PC 上完美运行,但在我的 Mac (Yosemite OSX) 上运行不佳。正如您在图片中看到的,Mac 上的字体比 Windows 上的字体稍大
我正在尝试使用 FaSTLane 将我的应用程序作为 alpha 版本部署到 Play 商店,但出现此错误: Google Api 错误:multiApkShadowedActiveApk:任何设备都
我在这里找不到神奇的调味料。看起来 API 不支持它,所以我想我正在寻找一些 CSS 来使 slider 更大。 我得到的是左边的,但我想把它设计成右边的样子?任何 CSS 技巧或以前有人这样做过。
如果我运行这段代码: float a=1.123456789; printf("The float value is %f\n",a); double b=1.123456789876543 prin
我正在尝试使用 strip binary 来剥离我的目标文件。我在 gcc-7 上构建了最新的 binutils,但我的代码库使用 gcc-4.9.2。Binutils 是为 64 位架构构建的,我的
有没有办法让 iPhone 应用的“内容”区域感知到更大的导航栏? 类似这些问题: iOS: Adding a fixed image just below the navigation bar iO
我是一名优秀的程序员,十分优秀!