开发自用桌面小工具,想要内存占用低编译结果小除了 Delphi 还有什么推荐?

2024 年 11 月 23 日
 FrankAdler

Delphi CE 下载怎么选实际下载到的都是 RAD Studio ,然后换了好几个邮箱都不到授权邮件,放弃了。

其他的 Electron ,JavaFx 、Compose Multiplatform 、WPF 这些看下来编译结果个启动后空载内存都不低,个人不喜欢。

前阵子用 WinForm 做了个小工具,启动后 17M ,勉强能接受,但是今天找了个类似的,人家启动才 2M 功能还比我多,就想试试别的期望能内存占用更低。

8876 次点击
所在节点    程序员
85 条回复
bruce0
2024 年 11 月 24 日
想要极致的低内存占用, Windows 图形应用, 常见的应该是用 C/C++使用 win32 或者 MFC 开发吧, 手搓汇编这种事不是一般人能干的,很赞同 #34 楼老哥的说法
kkgogo
2024 年 11 月 24 日
aardio
sir283
2024 年 11 月 24 日
Windows 可以用 win32 跟 mfc 啊,Linux 可以用 xwindow 啊,而 c++的 qt 框架介入两者之间,方便开发跟阅读,资源占用也比较 electorn 这些前端框架,要小一些。
d3adl0ck
2024 年 11 月 24 日
@dcsuibian 同意,rufus 就是 win32 api 写的,可以试试
loginv2
2024 年 11 月 24 日
aardio 易语言 Lazarus VisualFreeBasic
cnbatch
2024 年 11 月 24 日
不知道 OP 用不用分辨率缩放。如果用到了缩放,那么 OP 要考虑清楚这一点。

先说事前准备。对于使用了分辨率缩放的应用,只要是用 C 、C++开发的,在开发时需要把这里提到的 XML 保存成 .manifest 文件,嵌入到 vcproject 当中。
https://learn.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process
做法很简单,我是保存成 dpi_adjust.manifest 文件,直接拖入 Visual Studio 当前项目里面。使用 manifest 文件的好处是不用每次都手动调用 SetProcessDpiAwarenessContext 这个 API 。

不做这个准备的话,程序运行后在高 DPI 环境下是一片模糊的。

准备完成后,麻烦的地方来了。

使用纯 Win32API 来做的话(无论是纯 C 还是 C++),那就要自行调整缩放后的 UI 坐标。UI 内的每个图标、每个文本框等等都要手动调整。
Rufus 的源码就是这样干的,对于每个 UI 资源都要手动调用 GetWindowRect 、MapWindowPoints 调整位置。

像 OP 这种单纯的托盘类应用,其实使用 wxWidgets 都足够了,程序启动后的内存占用 4M 上下,并没有比 Delphi 、VB6 多很多。最重要的是,如果使用了 wxWidgets 之类的 UI 框架,框架自身已经包含了缩放所需的计算,无须使用者操心。
ETiV
2024 年 11 月 24 日
https://github.com/ColleagueRiley/RGFW
A cross platform lightweight single-header simple-to-use window abstraction library for creating graphical programs or libraries.
Serino
2024 年 11 月 24 日
试试某大佬的 aardio ?
roundgis
2024 年 11 月 24 日
@kneo 十几年前接过一个外包

当时评估过 autohotkey 和 autoit 最后选了后者 包比较多一些
R4rvZ6agNVWr56V0
2024 年 11 月 24 日
@yinmin VB6 确实不错,当年还有大量的 ocx 用,很轻松就完成一个 windows app
panda1001
2024 年 11 月 24 日
追求内存占用的 xp 开发
https://skywind.me/blog/archives/2808
sunmker
2024 年 11 月 24 日
何必嘞
qbqbqbqb
2024 年 11 月 24 日
@roundgis 这个开发体验像以前的 delphi 7.0 ,但是写出来的东西可执行文件挺大的
hxy100
2024 年 11 月 24 日
aardio +1
chingyat
2024 年 11 月 24 日
可以试试 tcl/tk ,虽然内存占用可能比原生语言大,但 runtime 本身很小。
raptor
2024 年 11 月 24 日
不试试开源版本的 delphi:

Lazarus
yqs112358
2024 年 11 月 24 日
QT 应该挺符合你的要求,写东西也方便,现成工具库一大堆
(当然还是比较占硬盘,几十 M 打底吧,不过就目前硬盘容量来看也不差这点)
图方便用 python 写,也可以用 PyQT
yqs112358
2024 年 11 月 24 日
话说。。其实这几 M 内存也无所谓了
有强迫症的话平时可以多看看 Defender ,Chrome ,VSCode ,QQ 微信的占用,脱敏一下(
yqs112358
2024 年 11 月 24 日
除非你是要跑在十年前+的老机子上,不然也不用太在意这个,和其他的大玩意相比你自己写的基本只是小意思
mxlg2030
2024 年 11 月 24 日
rust Tauri

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1092097

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX