首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于我在“机器内部”中读到的内容,这种分支方法是否更理想?

基于我在“机器内部”中读到的内容,这种分支方法是否更理想?
EN

Software Engineering用户
提问于 2011-06-17 08:35:08
回答 5查看 346关注 0票数 3

所以我一直在读乔恩·斯托克斯的“机器里面”。这是一本很棒的书,它让我思考编程对处理器的影响。

给定CPU中的分支单元和涉及过程调用(如果IsTodayAHoliday(现在)>0)的复杂条件语句,在IF语句之前将该过程调用的结果放入变量中会更快吗?从静态和动态分支预测的角度来看,在分支单元进行评估之前有决策值使得预测算法能够完美地执行,这是合乎逻辑的。这是真的吗?

EN

回答 5

Software Engineering用户

发布于 2011-06-17 08:50:20

我能想到的最好的答案是,我一遍又一遍地看到:

代码语言:javascript
运行
AI代码解释
复制
Don't prematurely optimize.

更长的版本是:编译器(想必)比您更了解目标体系结构。您应该编写正确和可维护的代码,如果底层硬件发生了变化,您就不希望代码与特定的硬件绑定得太紧。

对于某些体系结构(例如Cell/BE),在漏掉分支预测时,管道失速的代价远远高于计算、准备两个分支并根据计算结果进行无条件跳变的代价。但我认为在其他硬件上这样做是完全错误的。

此外,根据我在编译器优化方面的经验,更简单、更容易识别的模式更有可能被优化(考虑到XOR交换与临时变量交换)。

希望这能有所帮助。

票数 14
EN

Software Engineering用户

发布于 2011-06-17 09:24:31

如果你说的是:

代码语言:javascript
运行
AI代码解释
复制
if (isTodayAHoliday(now) > 0) { ... }

和:

代码语言:javascript
运行
AI代码解释
复制
int holiday = isTodayAHoliday(now);
if (holiday > 0) { ... }

答案很简单:机器代码绝对没有区别。

请记住,CPU对函数或表达式一无所知。分支指令不接受函数或表达式,它需要一个值来比较零(或其他什么)。不管你用高级语言来表达它,编译器都必须发出代码来计算这个值,把它放在寄存器中,然后得到分支指令。

票数 11
EN

Software Engineering用户

发布于 2011-06-17 08:46:12

马比,但你说的是微观优化。这通常最好由编译器来处理。

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

https://softwareengineering.stackexchange.com/questions/84898

复制
相关文章
自定义实现UISlider
bering
2023/10/16
2570
iOS UISlider用法总结 原
UIslider滑块控件在IOS开发中会常用到,可用于调节音量,字体大小等UI方面的交互,用法总结如下:
珲少
2018/08/15
8900
iOS滑动条UISlider的使用方法
如上图所示,在图中有四个内容:滑动条本身、最小值label、最大值label、当前值label。
Cloudox
2021/11/23
2.5K0
iOS滑动条UISlider的使用方法
iOS开发小点·UISlider正确的滑轨宽度设置姿势
UISlider无法通过改变frame来改变滑轨宽度 正确的滑轨宽度设置姿势 - (CGRect)trackRectForBounds:(CGRect)bounds { return CGRectMake(0, 0, ScreenWidth, 15); }
陈满iOS
2018/11/09
2.4K0
自定义UISlider控件(实战篇)
最近公司项目需要自定义一些控件,其中就包括双滑块的UISlider。系统是不提供双滑动的。所以我就自己制作一个自己喜欢用的轮子。 (跟其他Slider轮子的主要优点,1.使用简单。2.占用内存小。3.尽量不使用图片,减小ipa包。) (同UISlider轮子对比的主要优点,很简单的变化多样的UI) 先说下都实现的功能: 1.单滑块,左右滑动。 2.双滑动,2个滑块左右滑动。 采用框架 view + model 传统MVC框架,view根据model的数据去变化。如果view的代码超过1000行再重构为vi
大壮
2018/06/19
1.1K0
【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725
韩曙亮
2023/03/27
3.3K0
【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突
方案一:这个跟UIScrollView的一个属性delaysContentTouches有关。
且行且珍惜_iOS
2018/08/27
4.1K0
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突
仿IOS 带字母索引的滑轮控件
做开发的时候,经常碰到产品经理设计出来的界面是参考IOS控件设计出来的 ,比如上图效果  ios有个控件是UIPickerView  就是可以上下滑动 并有些3d效果,非常炫。
再见孙悟空_
2023/02/10
1.1K0
仿IOS 带字母索引的滑轮控件
iOS中表单视图第三方控件——FXForms 原
        表单视图是移动开发中十分常用的一种UI方式。在iOS开发中,系统的UITableView可以用来创建表单视图,其界面的渲染与逻辑的处理需要开发者实现许多代理方法。FXForms是一个第三方的表单创建工具,其通过配置的方式来进行表单界面的创建,并且其中为开发者封装好了各种常用类型的表单cell。
珲少
2018/08/15
1.2K0
iOS中表单视图第三方控件——FXForms
                                                                            原
自定义带图片和文字的ImageTextButton
今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白,估计有的同学或者开发者看了说,这种方式多此一举,但是小编我不这么认为,多一种解决方式,就多一种举一反三的学
非著名程序员
2018/02/08
8390
自定义带图片和文字的ImageTextButton
基于Combine的响应式UIControl
iOS开发中UIKit中控件的交互方式默认是Target-Action,这种方式简单且直观。不过,一个问题在于编码方式太过于繁琐,需要定义一个方法,然后调用addTartget方式进行绑定;在复杂页面交互,需要跨多级数据传递的时候,就变得异常繁琐。
用户8438817
2023/04/21
9990
iOS14开发-UIView
在 iOS 13 中引入了新的 API — Diffable Data Source,它不仅能够驱动 UITableView 和 UICollectionView,而且可以更简单高效的实现数据的刷新。
YungFan
2021/01/21
12K0
iOS 自定义UIImagePickerController
  前后值不能切换,各种尝试找了半天没找到有原因。后来发现我在设置图片尺寸的时候设置为1080P[self.session canSetSessionPreset: AVCaptureSessionPreset1920x1080],前置摄像头并不支持这么大的尺寸,所以就不能切换前置摄像头。   我验证了下 前置摄像头最高支持720P,720P以内可自由切换。 当然也可以在前后置摄像头切换的时候,根据前后摄像头来设置不同的尺寸,这里不在赘述。
码客说
2019/10/22
1.6K0
自定义带 vip 标识的 圆形头像(圆形ImageView)
import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics
再见孙悟空_
2023/02/10
1.9K0
Objective-C 自定义UISlider滑杆 分段样式效果需求分析代码部分DEMO地址
查看UISlider控件发现这个类是继承自UIControl,那么就自定义一个UIControl来实现UISlider没有的效果。 公开的变量中都是一些通用的参数,无非就是颜色、图片之类的,我这里使用比较少,有兴趣的可以自行添加。
gwk_iOS
2018/08/23
1.6K0
Objective-C 自定义UISlider滑杆 分段样式效果需求分析代码部分DEMO地址
04 Nifty自定义带图片的下拉框
读了好久源代码,才搞明白怎么回事,其实现在回过头来想想很简单,主要是寻找的过程艰难。 自定义一个control 在resources里面新建一个文件夹MyControls,新建一个名为my-nifty
刘开心_1266679
2018/04/17
1.1K0
点击加载更多

相似问题

自定义UiSlider IOS 6

20

iOS - UISlider的自定义镜像

33

自定义ios中的进度视图/ UISlider

20

UISlider action - iOS

20

iOS:自定义UISlider中的图像大小

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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