将 Qt 的目录 “Build-directory” 转移到 内存
可以减少 SSD硬盘磨损 ?
linux下共享内存 SHared Memory (shm)
/dev/shm/
缺点:电脑重启动之后,在 shm目录中的 build数据消失,需要重新全部编译一遍。
示例:在相同条件下,编译同一个工程的所需时间
09:37:37: Elapsed time: 00:58. # 在硬盘上的目录进行编译 /build-untitled4-Desktop-Debug
09:42:53: Elapsed time: 00:57. # 在 /dev/shm/ 目录进行编译:快了 1秒
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 760M 2.2M 758M 1% /run
/dev/sdb2 187G 47G 132G 27% /
tmpfs 3.8G 359M 3.4G 10% /dev/shm
说明:
- 只需一条命令,就可以自己建立内存盘;或者,也可以修改有关配置文件。但是,麻烦。
- /dev/shm/ 是操作系统默认就有的内存盘。但是,在服务器版上,可能有诸多限制;一般在桌面版上使用,还是很方便的。
参考:
@ 4. /dev https://zhuanlan.zhihu.com/p/632905282?utm_id=0
/dev目录包含设备文件,这些文件用于与系统中的设备进行交互。在Linux中,一切都被视为文件,设备文件用于访问硬件设备,如磁盘、键盘、鼠标等。
linux进程间通信 - 共享内存(shm) https://blog.csdn.net/weixin_43471255/article/details/124239001
简介:共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。
任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。
共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。
原文链接:https://blog.csdn.net/m0_74985965/article/details/128752896
Linux——详解共享内存shared memory https://blog.csdn.net/weixin_61857742/article/details/128252280
共享内存缺点:用于进程间通信时,共享内存本身不支持阻塞等待操作。
linux中 tmpfs 详解 https://blog.csdn.net/yuhengyue/article/details/106787358
tmpfs是什么呢? 其实是一个临时文件系统,驻留在内存中,所以/dev/shm/这个目录不在硬盘上,而是在内存里。因为是在内存里,所以读写非常快,可以提供较高的访问速度。
linux下,tmpfs默认最大为内存的一半大小,使用df -h命令刚才已经看到了,但是这个df查看到的挂载内存大小的数值,
如果没有使用,是没有去真正占用的,只有真正在tmpfs存储数据了,才会去占用。
比如,tmpfs大小是499M,用了10M大小,内存里就会使用真正使用10M,剩余的489M是可以继续被服务器其他程序来使用的。
但是因为数据是在内存里,所以断电后文件会丢失,内存数据不会和硬盘中数据一样可以永久保存。
了解了tmpfs这个特性可以用来提高服务器性能,把一些对读写性能要求较高,但是数据又可以丢失的这样的数据保存在/dev/shm中,来提高访问速度。
调整大小:我们还可以根据实际需要去调整tmpfs文件的大小。
---------------------------------------------------------
关联参考:
双系统:Qt 编译错误 has modification time yyy s in the future https://blog.csdn.net/ken2232/article/details/136386652
Qt编译时出现:File “xxx“ has modification time yyy s in the future https://blog.csdn.net/ken2232/article/details/136386282
==================================
Qt Build-directory : 默认的命名规则:
/build-项目名称-Qt库版本号-编译器名称及版本-Debug
示例:自动生成的默认的 Build-directory
/build-untitled4-Desktop-Debug
/build-xxx-Qt_5_14_2_gcc_64-Debug
_xxx-Debug,或 _xxx-Release,
优选:shadow build,可使“源码目录”保持清洁。
<< 官方默认;用户可修改到其他目录,如内存盘。
下图,只需修改圈3,圈4、5会自动修改:
下图:不建议使用;原因:源码和 在build过程中产生的代码,混杂在一起了。