V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ipwx  ›  全部回复第 30 页 / 共 201 页
回复总数  4003
1 ... 26  27  28  29  30  31  32  33  34  35 ... 201  
@vcfghtyjc 那能不能编译前自动给每个 data structure 都加个判断,除非声明就是要重复引用?
----

编译器其实没那么弱鸡,C 语言的头文件 include 也挺快。C++ 之所以那么慢还是因为生命定义全部放进头文件了,而且全都是超级复杂的模板。meta-programming 你学习一下就知道多强大了,这玩意儿可是编译期就图灵完全的。

相当于你能在代码里写递归、写斐波那契数列、写 whatever 东西,让编译期在编译的时候把结果算出来,而不是在运行的时候算出来。当然,前提是你写得出来。
@vcfghtyjc 编译器不能 cache 一下每个文件的处理结果,遇到相同的文件直接用之前处理好的结果吗?
----

这就是 C++20 module ,但是前提是要承认“一个头文件里面的行为不受它之前 include 的其他头文件影响”。

现在的编译流程不具有这个约定。你八竿子搭不上边的 #define 可以影响到后面 include 的头文件。
@vcfghtyjc 你说对了,源码长度就是很长,而且还很复杂。

纯 C 语言的头文件一般只有声明所以速度相对快,但是 C++ 不同。为了追求 zero-cost abstraction ,C++ 的很多东西声明和定义全部都在头文件里面,而且模板 meta-programming 对于编译器是复杂的东西。这样叠加上去就,超级慢。一个 C++ 源代码文件 include 展开以后有几百上千 KB ,几百上千个 template class ,我觉得毫不意外。每个源文件都给你来这一套,想想多复杂。

C++20 的 module 就是规定,一些头文件不受其他头文件 macro 的影响。这样你就能预编译这些头文件,就不会有那么多重新编译的开销了。

在 C++20 module 前,业界最佳的实践是 Qt ,大量使用 private class + pointer ,尽量避免使用 template ,达到了很好的编译速度。然而,由于使用这两个技术,所以毕竟不是 zero-cost abstraction ,因此在运行速度上是打折了的。当然比起 node.js 还是秒杀。

最后简要介绍 zero-cost abstraction 。这东西看一个例子:

* C 语言的库函数 qsort 要传入一个函数指针。
* C++ 的库函数 std::sort 传入的是模板函数。

函数指针是不能内联优化的,因此每两个元素比较都不得不进行一次函数调用,有固有性能损失。
模板函数是可以内联优化的,相当于消除了这一次函数调用。更何况消除以后 C++ 可以进一步做指令集优化。

所以 C 语言 qsort 比 C++ 慢。
2022-03-22 10:17:36 +08:00
回复了 Nanguage 创建的主题 分享创造 oneFace: 根据 Python 函数同时生成 CLI, GUI 和 Web app 的包
提个小建议:类型声明用 Arg 挺不友好。。。

建议考虑用 dataclass 包一层,或者参考 Pydantic 。尽量用内置变量 比如 int 和默认值推断你的界面
是的,而且老龄化劳动力减少必然会造成很严重的经济危机。根本不是什么人少了就不内卷了
2022-03-15 00:37:46 +08:00
回复了 dog82 创建的主题 Linux 哪个 Linux 发行版适合 coder
linux mint
2022-03-15 00:11:42 +08:00
回复了 kaifeiji 创建的主题 PostgreSQL [数据库/PostgreSQL] 真的没有完美的分页方法吗?
ES 的底层是 Lucence ,LUCENCE 在我当年学习的时候,分页原理应该是直接用关键词抽出来一些倒排索引,然后用优先队列对倒排索引进行合并,上面的结果打分以后用一个大小为 K * page_size 的堆保存最好的前 K 页结果然后返回第 K 页的内容。
2022-03-08 00:47:07 +08:00
回复了 kisshere 创建的主题 投资 一直搞不懂,资产 1kw 和纯流动现金 1kw,有啥区别?
顺便真有人上杠杆问券商融券(你就理解为借钱)买股票。。。。但是跌停卖不出去,强制平仓都平不了,眼睁睁看着它跌停,最后倒欠券商几千万。因为上了杠杆,所以几百万本金亏几千万是很容易的。
2022-03-08 00:44:41 +08:00
回复了 kisshere 创建的主题 投资 一直搞不懂,资产 1kw 和纯流动现金 1kw,有啥区别?
有一种东西,叫做流动性风险。
----

通俗一点,当资产一直在上涨的时候,傻子都知道持有,因此不愁卖不出去。此时给你一种错觉:资产变现很容易。

然而,当楼市开始下跌的时候,如果你不是那个率先抢跑的人…… 那你只能坐看手中的房产一天天贬值而无法变现。哪怕打七折都没法变现。。。这就是流动性风险。

房产说的远了,你不访问问为啥人家买股票追涨还是输得一塌糊涂。。。很简单,涨的时候刚买进去,连续给你来两个跌停。跌停哦,卖单一堆一堆压着,所有人都是跌停价想卖,等你挂单根本轮不到你卖。两个跌停是什么概念?主板 -19%,科创板 -36%

更何况有时候给你来五个跌停。。。 -68%。哭去吧

这就是流动性风险
2022-03-07 13:26:19 +08:00
回复了 davidshao 创建的主题 问与答 有好的笔记软件同时适配 markdown & LaTeX 的嘛
@davidshao LaTeX 巨难伺候。

Texpad (mac) 自己做了个实时渲染引擎,能支持一部分英文的 LaTeX 写作。

Overleaf 的速度还行,刷新一次渲染几秒钟差不多。可以自己部署一个放在 Linux Server 上。

其他的都不行。
2022-03-07 01:30:56 +08:00
回复了 davidshao 创建的主题 问与答 有好的笔记软件同时适配 markdown & LaTeX 的嘛
不要迷信同时满足。

也不要觉得记笔记需要用 LaTeX 。

LaTeX 可以用 Texpad ( mac )或 Overleaf ( docker )
2022-03-02 10:22:44 +08:00
回复了 CookCoder 创建的主题 程序员 斐波那契数列 n = 9292 的结果是什么?
“我只是认为在国内很基本的面试题”

我觉得坚持这个认知没错,这件事情就说明沟通技能差了。(
2022-03-02 10:17:53 +08:00
回复了 CookCoder 创建的主题 程序员 斐波那契数列 n = 9292 的结果是什么?
我觉得沟通需求也是程序员重要的基本技能。楼主这就属于沟通技能极差
2022-03-01 23:15:03 +08:00
回复了 iyaozhen 创建的主题 Python 大佬们,有谁研究过 Python importlib 机制? sys.modules 缓存太大了
@sujin190 我这里也有个类似的需求,Python 在线生成 .so 然后 import 做计算的。.so 是根据上传的文本产生 C++ 代码然后编译出来 python 模块。。。所以用了个 subprocess
2022-03-01 23:13:52 +08:00
回复了 iyaozhen 创建的主题 Python 大佬们,有谁研究过 Python importlib 机制? sys.modules 缓存太大了
@iyaozhen 来自 php 时代的 trick ( php-fpm ):后台进程负责 import cache ,过一段时间就杀死。这样就能从头再来了。
2022-02-22 01:50:53 +08:00
回复了 sudoy 创建的主题 问与答 请教关于加密算法 blake2b
按照楼主的 3 个字符哈希算法,当有 100 个手机号时发生哈希冲突的概率就有 12%,500 个就是 95.8%。。。

https://zh.wikipedia.org/wiki/%E7%94%9F%E6%97%A5%E5%95%8F%E9%A1%8C
2022-02-15 11:16:20 +08:00
回复了 miscnote 创建的主题 Java scala 问题吐槽一下
Scala 不就图它语法糖吗?

pattern matching, case class, 闭包 .... 写起来比 java 快很多啊
不过话说回来除了大厂,哪里会普遍使用 k8s 嘛(抠鼻)
1 ... 26  27  28  29  30  31  32  33  34  35 ... 201  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1734 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 16:25 · PVG 00:25 · LAX 08:25 · JFK 11:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.