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

71 天前
 FrankAdler

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

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

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

6026 次点击
所在节点    程序员
83 条回复
bruce0
70 天前
想要极致的低内存占用, Windows 图形应用, 常见的应该是用 C/C++使用 win32 或者 MFC 开发吧, 手搓汇编这种事不是一般人能干的,很赞同 #34 楼老哥的说法
kkgogo
70 天前
aardio
sir283
70 天前
Windows 可以用 win32 跟 mfc 啊,Linux 可以用 xwindow 啊,而 c++的 qt 框架介入两者之间,方便开发跟阅读,资源占用也比较 electorn 这些前端框架,要小一些。
d3adl0ck
70 天前
@dcsuibian 同意,rufus 就是 win32 api 写的,可以试试
loginv2
70 天前
aardio 易语言 Lazarus VisualFreeBasic
cnbatch
70 天前
不知道 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
70 天前
https://github.com/ColleagueRiley/RGFW
A cross platform lightweight single-header simple-to-use window abstraction library for creating graphical programs or libraries.
Serino
70 天前
试试某大佬的 aardio ?
roundgis
70 天前
@kneo 十几年前接过一个外包

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

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

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

https://tanronggui.xyz/t/1092097

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

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

© 2021 V2EX