阅读视图

发现新文章,点击刷新页面。

C与C++: restrict关键字及其在编译器优化中的作用


什么是 C 中的 restrict

restrict 是 C99 引入的指针类型限定符。它告诉编译器,该指针在其生命周期内是访问其所指内存的唯一方式。

这使得编译器可以安全地进行优化,因为它可以假设没有指针别名 —— 即没有其他指针访问相同的内存。

语法示例:

void copy(int *restrict dst, const int *restrict src, size_t n);

优点:

  • 启用更激进的编译器优化
  • 提升在循环和内存密集型操作中的性能
  • 明确表达开发者对指针用途的意图

没有使用 restrict 时:

void copy(int *dst, const int *src, size_t n);

没有 restrict,编译器必须假设 dstsrc 可能指向重叠的内存,限制了优化空间。

注意事项:

  1. restrict 仅在 C99 及以上版本中有效
  2. 只适用于指针类型
  3. 错误使用会导致未定义行为

C++ 中有 restrict 吗?

C++ 并不包含 restrict 这一标准关键字。不过,可以通过其他方式实现类似效果。

1. 编译器扩展

大多数主流编译器支持非标准的替代写法,例如:

void foo(int* __restrict__ a, int* __restrict__ b);
  • GCC/Clang:__restrict__
  • MSVC:__restrict

注意:这些方式不具可移植性。

2. 使用现代 C++ 提供的更安全语义

现代 C++ 鼓励使用更安全、更清晰的方式,如:

  • 使用引用而非原始指针
  • 使用 std::span(C++20)明确表达内存范围
void add(std::span<int> dst, std::span<const int> src);

虽然这不能从底层强制无别名,但能提高代码意图的清晰度,有助于规避别名相关的问题。

总结对比表

功能 C语言 C++
restrict 支持 标准(C99+) 非标准
优化收益 支持 支持(需扩展)
更安全的替代方案 std::span、引用

总结

在 C 中,当你能确保没有内存别名并且关心性能时,应当使用 restrict。在 C++ 中,优先使用更现代的语义(如引用、std::span),必要时也可以谨慎使用编译器扩展版本的 __restrict__

C/C++编程

英文:C vs C++: Understanding the restrict Keyword and its Role in Optimization

本文一共 460 个汉字, 你数一下对不对.
C与C++: restrict关键字及其在编译器优化中的作用. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C与C++: restrict关键字及其在编译器优化中的作用 C++ C++ 学习笔记 程序设计 编程 计算机
The post C与C++: restrict关键字及其在编译器优化中的作用 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  3. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  4. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  5. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  6. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  7. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  8. 通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell 本文详细讲诉了用脚本实现定时模拟计算机按键,用于保持系统一直在线的状态。脚本可以使用VBScript、JScript和Powershell。这三种脚本语言都是微软/Microsoft的,不过前两种已经要被淘汰了。 在 Windows 环境下,这三种脚本(PowerShell、VBScript 和 JScript)都通过 CreateObject 来调用 COM 对象 WScript.Shell,以实现模拟按键的功能。例如,可以每隔一分钟模拟按下 Scroll Lock 键一次,从而保持“在线”状态(Keep Alive)。Scroll...

因回答了一个什么是夏令营的问题,我的 其乐Keylol 帐号被封了

起因只是有个网友在其乐Keylol上问了这么个问题:

screenshot_on_b85m_by_flameshot_at_2024-06-30_18-02-33

基本上他就是想问问,所谓的夏令营和少年宫都是啥玩意。

(你可先别问为什么只有个浏览器历史记录的截图)

(其实昨天还挺有心情写这篇文章的,但是过了一晚上又稀里糊涂过完一个白天之后就又没什么欲望了)


少年宫和夏令营是啥?

少年宫?

少年宫应该是啥玩意说实话我也不知道。我老家以前就有个少年宫,里面是个电影院,也不对外营业,全年也就只有给中小学放电影这一个业务,到后来学校都有自己的阶梯教室,甚至教室内都有电视和投影仪了,没人再去了;电影院外边一圈则是租出去了,都是补课班,类似大城市的写字楼,只不过业务基本以向学生营业为主。当然,大部分时间里里外外都是空着落灰,事业单位的地皮,房租贵且维保烂,市场经济下就得落灰。后来就连带着旁边的初中全拆了,盖了个酒店,连个照片都没剩下。

夏令营?

夏令营这玩意,在我的理解中那就更神奇了。

1995年 CCTV-7 少儿·军事·农业·科技 开业。我家里虽然没有有线电视,但是老式羊角天线电视却能很不稳定的收到带着巨大杂音和雪花的有线电视节目(白嫖)。而 CCTV-7 的少儿节目从下午3点左右一直干到晚上7点,大部分节目都是少儿科普和夏令营。少儿科普节目离谱得有点过分了,以至于我一直以为北京的自来水干净得可以直饮,公交车都是氢燃料电池。而夏令营节目则更是看着一堆小孩在那做我完全理解不了的事情。小学寒暑假期间被关在家里,就只有这玩意是小孩能看的电视节目,而且看着还巨难受!

然后时间可以直接跳到我在北京的一份工作。原本核心业务是面向学校经营IT类服务,但是老板想要扩展业务,另一个部门就有面向「面向学生经营的业务」的业务。这段有点饶口,毕竟我的确搞不清另一个部门到底在干啥,毕竟「组织学生搞线下文娱活动」实在离「提供计算机网络技术服务」太远了。

再后来又可以跳到我在清华里面工作的那段时间。上班是要从五道口地铁站下车再从清华大学东南门进去的,而清华东南门往南这一块,早上就经常有一队一队的看着像中小学生的人,有时候还有领队的点名,看着貌似像是组团旅游?

jpg_screenshot_on_b85m_by_flameshot_at_2024-06-30_19-29-32

我就突然意识到,这不是我之前那个公司的业务场景吗?这玩意就是夏令营(的一部分)吧!


我的 其乐Keylol 账号被封

当然,我知道我的理解是片面的,但是片面是整体的一部分,把这一片拿出来,如果和其他人的另外一些碎片,一起拼起来,或许就能看到比较完整的答案了。

于是我把语言整理了一下,发布到了 其乐Keylol。

原答案:

只知道夏令营。以前工作过的公司的业务里有接触过,后来个人在清华里面上班的时候门口也见到过。当然,我见到的只有这种,观点非常片面,所以不能以偏概全。

夏令营:以小学生初中生高中生为主要客户,打着教育旗号的,旅行社……

说白了就是都是中小学生的旅游团。

那种一车下来都是老头老太太的穷游团,应该能想象得出来吧?把老头老太太换成中小学生,然后目的地是大公园大景点或者大高校,再把强制消费这块去掉,就行了。(当然,部分团可能也会有类似破冰和军训一样的内容)

比较烂的有那种就是清华大学一日游的玩意。
而且北京的大学一日游这种业务很火爆。有很多本地(北京的地理面积大得城南城北杀父之仇都能抿了)和外地来的学生,梦想就是进清北。小孩做梦很正常,但是针对这个做(渣)业务就有点……
大早上要求学生自己在清华大门口集合,然后到点了有个人领进去溜达一圈,这就夏令营了。尤其是(至少2018那阵)清华大学虽然是开放的外人可参观的,但是非相关人事需要提前一天预约才能进入。这块管得不是很严,因为清华大学里面有居民区,有公司,还有菜市场。进门的时候即使没有相应的证件(学生证,工作证,内部停车证)只要说明白你是在里面做什么的也让进。但是很多野夏令营组织就干一次少一次的,经常不预约领着一大队小孩就想进,然后就在清华门口堵着。大夏天看着一堆小娃娃站在太阳底下暴晒(都是6月7月8月份来的,也挺纳闷工作日哪来的这么多小初的小孩,应该还没放暑假吧)。
(说难听点却有点像家长暑假没地方扔娃,随便整个旅游团当托管,把孩子一扔。)

以前北京应该比较多吧,中央7套刚开播的时候从下午3点一直播到下午7点,全是夏令营,小时候我也挺好奇到底是啥玩意的,也看不懂。反正我这种本地小城没有,大学在西安念的,算是大城市了但是也没见到过多少。

b85m-win458-snap

啥玩意就涉政信息了?

尝试绕过他们的审查机制

首先想到的是火星文。

呮倁檤嗄泠營。姒湔厷呞哋鄴務里洧帹触過,後唻個亾茬凊澕里媔仩癍哋溡糇閄囗竾見菿過。當嘫,莪見菿哋呮洧適種,觀點悱瑺爿媔,葰姒芣能姒媥漑洤。

嗄泠營:姒尒敩泩初狆泩滈狆泩潙炷婹愙戶,咑着嘋yu旗呺哋,膂垳涻……

説皛孒僦湜嘟湜狆尒敩泩哋膂遊團。

哪種①車芐唻嘟湜荖頭荖忲忲哋窮遊tuan,應姟能想潒嘚炪唻妑?妑荖頭荖忲忲換荿狆尒敩泩,嘫後朩哋哋湜汏厷圎汏憬點戓鍺汏滈校,侢妑強zhi消曊適赽厾鋽,僦垳孒。(當嘫,蔀汾團妸能竾浍洧類姒岥bing啝軍xun①樣哋禸嫆)

仳珓灡哋洧哪種僦湜凊澕汏敩①ㄖ遊哋琓嬑。
洏苴苝倞哋汏敩①ㄖ遊適種鄴務佷焱嚗。洧佷哆夲哋(苝倞哋哋理媔積汏嘚峸遖峸苝摋父と仇嘟能抿孒)啝迯哋唻哋敩泩,夢想僦湜琎凊苝。尒陔莋夢佷囸瑺,泹湜針怼適個莋(碴)鄴務僦洧點……
汏皁仩婹浗敩泩洎己茬凊澕汏閄囗潗匼,嘫後菿點孒洧個亾領琎厾媹垯①圜,適僦嗄泠營孒。尤娸湜(臸仯2018哪俥)凊澕汏敩虽嘫湜閞fang哋迯亾妸傪觀哋,泹湜悱楿関亾倳濡婹諟湔①兲預箹財能琎叺。適赽涫嘚芣湜佷嚴,洇潙凊澕汏敩里媔洧劇姄岖,洧厷呞,還洧婇巿畼。琎閄哋溡糇旣使莈洧楿應哋姃件(敩泩姃,笁莋姃,禸蔀渟車姃)呮婹説眀皛沵湜茬里媔莋什庅哋竾讓琎。泹湜佷哆嘢嗄泠營蒩枳僦迀①佽仯①佽哋,經瑺芣預箹領着①汏隊尒陔僦想琎,嘫後僦茬凊澕閄囗陼着。汏嗄兲看着①碓尒哇哇跕茬忲陽疧芐懪曬(嘟湜6仴7仴8仴妢唻哋,竾侹妠悶笁莋ㄖ哪唻哋適庅哆尒初哋尒陔,6仴應姟還莈倣濐徦妑)。
(説難厛點卻洧點潒傢萇濐徦莈哋汸扔陔ふ,隨楩整個膂遊團當仛涫,妑陔ふ①扔。)

姒湔苝倞應姟仳珓哆妑,狆姎7套碙閞譒哋溡糇苁芐吘3點①矗譒菿芐吘7點,洤湜嗄泠營,尒溡糇莪竾侹恏渏菿疧湜倽琓嬑哋,竾看芣慬。反囸莪適種夲哋尒峸莈洧,汏敩茬覀鮟淰哋,匴湜汏峸巿孒泹湜竾莈見菿過哆仯。

也过不去审查。

然后想着用图片,同样过不去审查,我甚至试了加水渍加旋转,全都无法通过。腾讯的这套审查机制是够狠。

jpg_b85m-win457-snap

b85m-win459-snap

没办法,服软吧,自我审查。

我就一段一段的删除,最后发现即使只有第一行都不去审查。

只知道夏令营。以前工作过的公司的业务里有接触过,后来个人在清华里面上班的时候门口也见到过。当然,我见到的只有这种,观点非常片面,所以不能以偏概全。

就这么一句就已经涉及政治敏感信息了,还自我审查个屁屁。

最后我就随便回复了一句“你提了个我不该回答的问题”。结果管理员立刻闪现出来删贴并警告:

b85m-win462-snap

真有精神。

什么都没说等于什么都说

好好好,既然绕不过审查,那我干脆把所有词都打码就好了。

只知道口口口。以前工作口的公司的业务里有口口过,后来个人在口口里面上班的时候门口也见到过。当然,我见到的只有这种,观点非常口口,所以不能口口口口。

口口口:以小学生初中生高中生为主要客户,打着口口口口的,口口口……

说白了就是都是中小学生的口口口。

那种一车下来都是老头老太太的穷游团,应该能想象得出来吧?把老头老太太换成中小学生,然后目的地是大公园大景点或者大口口,再把强制口口这块去掉,就行了。(当然,部分团可能也会有类似口口和口口一样的内容)

比较烂的有那种就是口口大学一日游的玩意。
而且口口的口口一日游这种业务很火爆。有很多本地(口口的地理面积大得城南城北杀口之仇都能口了)和外地来的学生,梦想就是进清北。小孩做梦很正常,但是针对这个做(渣)业务就有点……
大早上要求学生自己在口口大门口集合,然后到点了有个人领进去溜达一圈,这就口口口了。尤其是(至少2018那阵)口口大学虽然是开放的外人可参观的,但是非相关人事需要提前一天预约才能进入。这块管得不是很严,因为清华大学里面有居民区,有公司,还有菜市场。进门的时候即使没有相应的证件(学生证,工作证,内部停车证)只要说明白你是在里面做什么的也让进。但是很多野口口口口口口就干一次少一次的,经常不预约领着一大队小孩就想进,然后就在口口门口堵着。大夏天看着一堆小娃娃站在太阳底下暴晒(都是6月7月8月份来的,也挺纳闷工作日哪来的这么多小初的小孩,应该还没放暑假吧)。
(说难听点却有点像家长暑假没地方扔娃,随便整个口口口当托管,把孩子一扔。)

以前北京应该比较多吧,中口7套刚开播的时候从下午3点一直播到下午7点,全是口口口,小时候我也挺好奇到底是啥玩意的,也看不懂。反正我这种本地小城没有,大学在西安念的,算是大城市了但是也没见到过多少。

顺利过审。

口好啊!

账号被封

果不其然,再登录账号的时候直接被禁用了。

b85m-win464-snap-1

b85m-win464-snap-2

b85m-win464-snap-3

不能看任何页面,不能修改信息,不能看通知,就被锁死在这个禁用页面了。


账号被禁用后

我是完全没心情去申请解封。

首先可以肯定这不是一个误封行为。

我这个账号自注册起就因为涉政被警告过太多次了。

他们的那个论坛专用水区已经禁止我回复超过一年了,就因为我喷PalPay难用,没有支付宝好用,属于恶意一踩一捧。

吐嘈个北京的外地人看病挂号难,被警告。

screenshot_on_b85m_by_flameshot_at_2022-07-15_14-11-12

如何跨区买游戏,涉敏警告。

screenshot_on_b85m_by_flameshot_at_2022-12-16_23-05-03

资讯促销问题,涉敏警告。

screenshot_on_b85m_by_flameshot_at_2022-11-24_17-01-54

帮助2022年疫情还未解封期间要进京的人,涉敏警告。

screenshot_on_b85m_by_flameshot_at_2022-12-16_23-06-32

甚至直接空降一个涉敏警告,连标题都没有(后面那个链接是死链)。

screenshot_on_b85m_by_flameshot_at_2022-12-16_19-02-10

这些截图都还是我当时被警告后顺手截的图。

说真的帖子一边在那因为提供有价值信息热心反馈乐于助人而不停地涨积分,同时又因为无法名状的原因不停的在那收警告,也算是其乐Keylol的一大特色。有时候甚至怀疑管理员是不是精神分裂了。

曾申请过解封

当时我曾向管理员申请过解封我灌水区的禁用,那时都已经被禁用一年了,人家还说怎么可能呢一般封14天就自动解封,然后专门翻出个我甚至懒得截图的证据,又贴了个带有一大片引用的《用户协议》

screenshot_on_b85m_by_flameshot_at_2022-11-24_17-03-34

让我打保票“下不为例”。下不为你个鸡巴的

是否要申请解封

其乐Keylol 给出的解封渠道是贴吧,里面有一条是账号被禁用的一般理由。

screenshot_on_b85m_by_flameshot_at_2024-06-30_18-33-06

我这是妥妥的符合他们的理由三。

你是官你是爷,你骑在老百姓头上拉屎。


国内社交平台

目前我有活跃度的就是B站,微博,其乐Keylol。

微博的账号去年被全站拉黑之后其实很快就解封了,但是我没有再发布过任何一条微博,只是简单的看看别人发的内容,点个赞,偶尔评论一下。之所以这么做是我觉得不能让新浪得逞了,把我的账号拿去发广告。虽然我的账号只有几百粉,绝大部分关注也都已经退微博了,但是看着账号顶着自己的名字发很恶心的营销内容实在是觉得会恶心。

jpg_563235edly1h40uobhyauj20gt0owaby

(截图账号原本是十多年前一起玩线上游戏的广东朋友,退博太久了账号被新浪拿去用来发擦边信息了)

B站其运营目标变成电商之后,社交环境急转直下,我的大部分关注基本都没有活跃度了,原有的忠实用户都已经被赶走了。现在这状态,偶尔看个猫猫还行,剩下的内容,不是三次元软色情擦边就是洗稿搬运甚至AI念稿。就算有人正经做一点内容,很快就会有喷子来袭。实在是没什么心情在这下工夫。

再往前说,以前我知乎、segmentfault和一些技术论坛也都是有一丁点活跃度的,但是知乎变逼乎,segmentfault更是开倒车退到迷路,国内技术论坛更是越来越弱智(不弱智的肯定会死)。

现在 其乐Keylol 也把我账号封了。封得好! 这就是我再次砍掉一块无用社交的大好机会!把精力放在更有意义的事情上。

尤其是这个平台还很正大光明的展示了:你的账号不属于你,你只有你账号的部分使用权。是啊,账号被封了之后,连自己曾经发布过的内容自己都看不到。

反正我是没有什么太大的损失,顶多算是又少了个 「问题互助」 平台罢了。其乐Keylol的问题互助板块其实也没好到哪里去,提出一个一般难度的问题时,可能最开始还有几个人认真回答,但过不了一会就有为了刷论坛积分和为了装逼充大神的答案刷个不停(有一次有个人提问关于 rEFInd Boot Manager 的问题,结果好多人竟然用 “Windows多引导好用为什么不用Windows的多引导” 来冲我从官方翻译过来的正确答案)。中国互联网现在就这个德性了,肮脏程度重回2008年那段又脏又乱小人能匿名君子被开盒的时代,而封闭程度则直接退到2000年前基本没有互联网的时候了。大家重回互相孤立互相敌视的状态,这又充分的体现出中国互联网用户绝大部分都是初中学历的特点,明面上互相接纳,实际上每个人都想把对方捅死而自己却又不会遭到任何惩罚。初中生的味道实在太重了

反正又不归我管。

The post 因回答了一个什么是夏令营的问题,我的 其乐Keylol 帐号被封了 first appeared on 石樱灯笼博客.
❌