nlzy 最近的时间轴更新
nlzy

nlzy

V2EX 第 107263 号会员,加入于 2015-03-25 12:34:47 +08:00
今日活跃度排名 8093
根据 nlzy 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
nlzy 最近回复了
2 天前
回复了 juejinloop 创建的主题 Linux Linux 高分屏缩放方案(分数缩放)
我用的也是非整数缩放,X11 下的 i3wm ,在 ~/.Xresources 里使用 Xft.dpi 设定 DPI 值。无论是 GTK 还是 Qt 效果都清晰锐利,fcitx 和 flameshot 也都能正常使用。画面撕裂的情况我是使用 picom 避免的。
@fatigue 你生活中嘴也会这么欠吗?
我也是三本院校的计算机学生,下周就毕业啦。

我在学校里算是学得比较好的(可能是这届最好的?)。其实也曾经天天骂学校开一堆什么 JSP 什么 SpringBoot 这样的技术课程,也希望老师可以多开一些基础的课程,希望讲义和实验也能跟上网上的优质公开课。至少我都是自己购买教材、自己在网上找公开课资源,靠着自学把计算机基础知识打牢的。

我这样的学生吧,对于学校开什么课程其实是不太关心的。课上得好我会去认真听,课上得不好我会旷课自己学自己的。只要不是上课又烂又爱抓考勤来卡人的老师,我都在期末教师评价里给了满分。

其实路都是自己走出来的,所以老师在课程改革的努力就没有意义吗?不是!我的同学在校期间,大部分对于就业的发展方向是没有概念的,学校教什么就学什么,也不会主动自学去拓宽知识。学校的教学内容对他们的知识面影响很大,老师这个时候该给学生指好路、带好路的。就像楼上说的“不能放弃这些学生,不是人人名牌大学,他们也要上学工作。”

我是反对楼上说的抓基础、抓原理的,真正对基础和原理感兴趣的学生一个年级可能就两三人,他们会自己学的。别把重点放在基础和原理上,且不说师资力量能不能教得好,也不说学生能不能学的进去,就单说就业:像我们学校出来的,能在小厂干开发就算不错,大多数人还是混个运维或者测试的岗位,也算专业对口。面试这样的公司和这样的岗位能要多少基础知识和底层原理?普通学校侧重“计算机科学与技术”里面的“技术”二字,不仅不丢人,相反我觉得务实得很。

楼上说的把数学课全删,基础课删大半我觉得还是过了,至少我学校这届高数线代离散都有,C 语言、数据结构、算法设计、计算机网络、数据库原理、操作系统原理、组成原理、体系结构、编译原理这些核心课程都还是全的。

回到课程的设置上,我觉得 Java 后端、Web 前端都没什么问题,身边的同学都有靠这个吃上开发这碗饭的。MySQL 和 Linux 也搞一搞,不管是做后端开发还是做运维都要用。软件测试必开,毕竟开一门课就能让学生多投一种岗位,性价比高得不行。

嵌入式或许可以搞搞,我印象里嵌入式相关的岗位好像不太看重学校层次。缺点是需要的课时数量实在是太多,不适合让所有学生把相关课程都搞完。

人工智能就真的拉倒吧。
42 天前
回复了 moonheart 创建的主题 Linux 切换到 Debian sid 使用一个月的体验
> Debian 11 的 ISO 自带的内核是 5.10, 当时安装的时候就发现不对劲,Wi-Fi 不工作;一番搜索之后才发现我的笔记本网卡是 MT7921 ,要从 5.15 内核才支持。

Debian 有 backports 源,目前 Debian 11 backports 中的内核版本是 5.16
49 天前
回复了 void59468 创建的主题 C++ gcc 可变长度数组
-Werror=vla
51 天前
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@chanlk 上完整代码
51 天前
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
直接给结论:如果语句 4 执行了,4 一定能保证读到 a 的值是 42 。A 和 B 线程的执行顺序不影响这个结论。

反对楼上说法的说法:“Happens Before 原则,只提到同一个线程内的连续上下文,并没有提跨方法、跨线程的问题。”

Java 8 语言规范 Threads and Locks 那一章对 Happens-before Order 的第一句介绍偏偏就是:“Two actions can be ordered by a happens-before relationship.”。而 action 一词在那章规范中就专指跨线程:“We will usually refer to inter-thread actions more succinctly as simply actions.”
81 天前
回复了 dangyuluo 创建的主题 C++ CPU 指令重排是 cache 同步太慢的表征么?
“这种重排是不可能发生的”,“CPU 某个核心上的指令重排现象”。我认为此处“重排”楼主意指内存乱序。

“多核 CPU 也是可以对指令进行重排的”,“CPU 是可以把指令重排成如下顺序”。我认为此处“重排”楼主意指乱序执行。

仅仅是“重排”这一词的使用就出现了混乱,主楼的其他部分就更不值得细细推敲了。我以为此处的混乱,正是楼主感到迷惑的根源:即使没有乱序执行,store buffer 就足以导致写读乱序。即使指令集架构保证读读连贯,也不能说明微架构没有投机加载。这两个东西就是风马牛不相及。更何况内存顺序是指令集架构定义的,而乱序执行是微架构的具体特性,连抽象层面甚至都不是一个层级。把两个根本不相干的事物混淆在一起,不感到迷惑才奇怪呢!不仅迷惑了自己也迷惑了读者,所以也不怪楼下有老哥留下“一顿胡扯”,“看着头大”的暴躁回复。

一个混乱的问题真的很难去回答,建议楼主可以把自己帖子里的“重排”一词,换成指代更清晰的“编译器重排”、“乱序执行”或“内存乱序”后再重新提问。同时诚挚向楼主安利《 A Primer on Memory Consistency and Cache Coherence, Second Edition 》一书以正视听。
@LeeReamond 外层循环的运行次数肯定少于内层循环。这也是没考虑 sqrt() 对性能的影响的原因,它们的运行次数都远远少于那两个表达式。
看了眼源码,是用试除法计算素数。那汇编都不用细看了,只要编译器不作妖,程序的瓶颈肯定是 l <= t 和 if (c % l == 0) 这两句。和缓存、访存关系都不大了。

虽然有一个 if ,但是这个分支比较好预测:即使是静态预测,每个不同的 c 也只会预测失败一次,所以和分支也没什么关系。循环条件同理。

同一个 c 的每一轮试除,l 是循环变量,而 c 和 t 是不变的,所以上述良好的分支预测再加上投机执行,是可以掩盖掉他们的延迟的,所以程序的瓶颈大概就是 l <= t 和 c % l 这两句的吞吐了。前者是整型转浮点然后比较,后者是一个除法。

上网查资料,zen2 的 div 吞吐率倒数是 13-44 ,zen3 是 7-12 。而 cvtsi2sd 和 comisd 在 zen2 和 zen3 上都是 1 。瓶颈在前者,后者可以忽略掉,而前者在 zen2 和 zen3 的性能差距正好大约是三倍。(浮点和整数除法的执行单元应该不冲突吧)

这大概就是楼主想要的答案了。

至于 mov %rdx, %rax ,寄存器重命名阶段就已经处理掉了,不会是瓶颈。

(唉,我为什么要大半夜不睡觉去分析这种编译器优化都没开,代码也没有仔细写的程序呢)
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1138 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 22:21 · PVG 06:21 · LAX 15:21 · JFK 18:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.