登录 立即注册

找到11537个回复

无名啊 67楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-28//)

@老虎会游泳,最后居然聊了这么远。。扯到汇编去了(但 C/C++ 本来就和底层接近,谈及汇编来理解 C/C++ 行为,似乎也很正常。。)

老虎你写商业 C++ 代码的,都不知道 restrict,看来 C/C++ 的效率足够绝大部分场景使用,是我杞人忧天了。

TabKey9 7楼回复 tasy5kg打游戏总是瞄不准,可能真的是鼠标原因 (2023-01-28//)
终于可以赖鼠标影响我发挥了,原来不是我菜,嘻嘻嘻
cnhong 7楼回复 乄杺谁能帮忙下个apk。。。 (2023-01-28//)
ashklxvne99660 6楼回复 乄杺谁能帮忙下个apk。。。 (2023-01-28//)
层主 @ashklxvne99660 于 2023-01-28 17:15 删除了该楼层。
老虎会游泳 37楼回复 yihuan内网用户同时看同一直播,怎么保证流畅 (2023-01-28//)

可以采用webrtc+p2p来进行播放,可以节省带宽流量。
例如:
http://www.hifilm.top/film/tv?media=http://cctvalih5ca.v.myalicdn.com/live/cctv15_2/index.m3u8
可以把上述网址中的media值改为其它m3u8网址

@admpub,它能实现类似BT下载那样的自动互传吗,看的人越多越流畅?


相关开源项目:

P2P技术使观看相同内容的用户之间可以相互分享数据,不仅能效降低视频/直播网站的带宽成本,还可以提升用户的播放体验,降低卡顿、二次缓存的发生率。 另外,随着H5的普及,flash逐渐被淘汰已成为不可逆转的趋势。而在H5采用的视频传输格式中,hls由于兼容ios和android、可以穿过任何允许HTTP数据通过的防火墙、容易使用内容分发网络来传输媒体流和码率自适应等众多优势而在业界得到广泛使用。通过使用hls.js这个第三方库,几乎所有现代浏览器都可以播放hls视频。hls天生分片传输的优势,使其可以采用p2p的方式进行传输,从而减小服务器的负担。在web端,无插件化实现p2p传输能力的最好选择就是WebRTC技术,与hls.js类似,WebRTC也支持几乎所有现代浏览器。本项目是一个hls.js的插件,通过WebRTC datachannel技术,在不影响用户体验的前提下,最大化p2p率,是面向未来的Web P2P技术。

CBPlayer 是基于 DPlayer 开发的,内置 CDNBye P2P 插件的 H5 播放器,加入了记忆播放等实用功能,右键可以查看p2p实时数据。支持HLS、MP4和MPEG-DASH三种格式的P2P加速。

老虎会游泳 1楼回复 老虎会游泳玩转直播流:使用SRS搭建推流服务器;使用SRS+ffmpeg中转推流;OBS推流到自建服务器;使用ffmpeg把直播流复制到多个网站 (2023-01-28//)

相关讨论:内网用户同时看同一直播,怎么保证流畅
https://hu60.cn/q.php/bbs.topic.102308.2.html?floor=36#36

@admpub

可以采用webrtc+p2p来进行播放,可以节省带宽流量。
例如:
http://www.hifilm.top/film/tv?media=http://cctvalih5ca.v.myalicdn.com/live/cctv15_2/index.m3u8
可以把上述网址中的media值改为其它m3u8网址

相关开源项目:

P2P技术使观看相同内容的用户之间可以相互分享数据,不仅能效降低视频/直播网站的带宽成本,还可以提升用户的播放体验,降低卡顿、二次缓存的发生率。 另外,随着H5的普及,flash逐渐被淘汰已成为不可逆转的趋势。而在H5采用的视频传输格式中,hls由于兼容ios和android、可以穿过任何允许HTTP数据通过的防火墙、容易使用内容分发网络来传输媒体流和码率自适应等众多优势而在业界得到广泛使用。通过使用hls.js这个第三方库,几乎所有现代浏览器都可以播放hls视频。hls天生分片传输的优势,使其可以采用p2p的方式进行传输,从而减小服务器的负担。在web端,无插件化实现p2p传输能力的最好选择就是WebRTC技术,与hls.js类似,WebRTC也支持几乎所有现代浏览器。本项目是一个hls.js的插件,通过WebRTC datachannel技术,在不影响用户体验的前提下,最大化p2p率,是面向未来的Web P2P技术。

CBPlayer 是基于 DPlayer 开发的,内置 CDNBye P2P 插件的 H5 播放器,加入了记忆播放等实用功能,右键可以查看p2p实时数据。支持HLS、MP4和MPEG-DASH三种格式的P2P加速。

tasy5kg 6楼回复 tasy5kg打游戏总是瞄不准,可能真的是鼠标原因 (2023-01-28//)
层主 @tasy5kg 于 2023-01-28 11:36 删除了该楼层。
老虎会游泳 1楼回复 ywm123安装start云游戏一切正常,就是启动游戏没有任何反应,所有游戏启动都没有反应 (2023-01-28//)

@ywm123,我也这样,还不知道怎么修复

老虎会游泳 5楼回复 tasy5kg打游戏总是瞄不准,可能真的是鼠标原因 (2023-01-28//)

@㝶芾厶眵攴䭡,回报率提高,游戏内灵敏度就需要降低,否则移动速度就会过快。

㝶芾厶眵攴䭡 4楼回复 tasy5kg打游戏总是瞄不准,可能真的是鼠标原因 (2023-01-28//)

@tasy5kg @老虎会游泳 那借楼一问,鼠标回报率和游戏内灵敏度是啥联系
~~~

hik 3楼回复 tasy5kg打游戏总是瞄不准,可能真的是鼠标原因 (2023-01-28//)
G304牛逼
消失的安装包 2楼回复 tasy5kg打游戏总是瞄不准,可能真的是鼠标原因 (2023-01-27//)

fps游戏鼠标回报率当然越高越好啊,影响真的很大

老虎会游泳 66楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

编译器认为 this 没被改,但 this->target 可能被改了。。

其实这句话没说错:

因此,每次修改 target,编译器认为 this 也可能随之变化,即 target[0] = t & 0x7; 可能改变了 this 指针。

因为this(也就是RDX寄存器的值)可能变了,所以才需要重新加载this->target

那为什么不需要重新加载this呢?因为它就在寄存器,所以自然不需要重新加载,直接用就好了。

老虎会游泳 65楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@无名啊,关于

老虎用 restrict 的情景多吗?

我以前不知道restrict和“严格别名”,今天刚知道。我以前唯一了解的所有权转移情形是std::move()

老虎会游泳 64楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

https://blog.csdn.net/xkdlzy/article/details/108873014

小于等于64位的整型或指针类型返回值由RAX传递。
浮点返回值由XMM0传递。
更大的返回值(比如结构体),由调用方在栈上分配空间,并有RCX持有该空间的指针并传递给被调用函数,因此整型参数使用的寄存器依次右移一格,实际只可以利用3个寄存器,其余参数入栈。函数调用结束后,RAX返回该空间的指针。

但函数没有返回值(void),所以不清楚上面的案例中RCX用于什么,x64调用约定没有明说。

老虎会游泳 63楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@无名啊,上面的代码:

因为target是struct T的第一个成员,所以它的首地址就是this。也就是说,this在rdx寄存器。

x64调用约定

整数参数在寄存器 RCX、RDX、R8 和 R9 中传递。

所以this既然在RDX中,那么它应该是第二个整数参数,第一个可能是返回地址。

老虎会游泳 61楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@无名啊,对了,VC++的__thiscall调用约定始终将this指针放在ecx寄存器。

https://learn.microsoft.com/zh-cn/cpp/cpp/thiscall?view=msvc-170

__thiscall 的调用约定用于 x86 体系结构上的 C++ 类成员函数。 它是成员函数使用的默认调用约定。

在 __thiscall 下,被调用方清理堆栈,自变量将从右到左推送到堆栈中。 指针 this 通过寄存器 ECX 传递,而不是在堆栈上传递。

无名啊 62楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,噢,是我想错了 编译器认为 this 没被改,但 this->target 可能被改了。。

x64 时,this 作为第一个参数,存在 rdi 中?

老虎会游泳 60楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@无名啊this可能已经优化到了寄存器中。

T::unpack3bit 每次移位之前都重新获取 target 变量的地址放到 rdi 中, mov rdi, QWORD PTR [rdx] ,而 target 整个过程没有改变,这样做没有必要。

这里是在读取target指针的值,mov rdi, QWORD PTR [rdx],是以rdx寄存器的值为内存首地址,连续读取8字节到rdi寄存器。

因为targetstruct T的第一个成员,所以它的首地址就是this。也就是说,thisrdx寄存器。

所以问题是程序一直在从内存加载this->target,而非一直在从内存加载this

老虎会游泳 59楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)
int a, b, c, d, e, f, g;
int *h = &b;

而在这种情况下,可能是a、c、d、e、h在寄存器,b在内存,因为&b需要一个内存地址。指针h通常在寄存器,因为这样更快。至于a、c、d、e、f、g哪个在寄存器哪个在内存,取决于它们的使用情况。

下一页 上一页 (280 / 577页)

11月13日 06:38 星期四

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1