无了个大语, 大家对 .net 的软件大小怎么看待

前文 小小折腾了下 JPEGView - #53,来自 loli

鉴于 jpegview 在浏览大图切换滞后感很重.
于是有动手肝个图片浏览器的想法
现在个人所需要的核心大部分已经完成了
更多的文件预读
无边框
直接拖拽就能移动界面
根据图片变化的透明背景
文件信息栏背景自动变化 (解决在图片过亮时看不清)
类似 jpegview 左下的缩略图
图片自适应宽度
单实例
关闭时不退出(加快启动速度)

当我准备让人测试一下时崩溃了
如图,右边是我本地的版本 依赖于框架(7个文件 不到1MB)
左边是自带框架的版本 (500+文件 153+MB)
看见就想吐血,我自己遇见这种大小的软件除非真有必要,不然就是直接无视绕开…

现在就有种"自爆自弃"的想法
既然别人运行这么复杂,干脆后面的设置界面,快捷键自定义等等全不做了
直接写死算了了,反正就自己一个人用,做那些估计是吃力不讨好

所以大家对这种打包后巨大的程序是怎么看的…
我连一个electron都不想装
说到electron, 它的一个缺点这也有
占用问题, jpegview直接打开无文件时内存占用2MB,后续占用一般不超过500mb
我这个打开后30MB,后续轻松超过2G…
关闭不退出时占用100+MB(有时内存没释放好就可能2G+一直在后台占着…)
虽然我占用这么多是有理由的(解决上面说的滞后感问题,以内存换取速度)
但一般人看见一个图片浏览器占用几个G是什么想法…
更加加重了我的"自爆自弃"想法.

有些dll类库可以删掉的,你可以测试,如果删掉打开exe没问题的话,直接删了就是了。
现在一个程序几百MB也不算什么事吧,7z压缩一下也才几十MB,
所以你说的问题,基本上不算大问题。

要么降级到 .NET Framework,系统自带的有;要么就让用户安装运行时,起码还有可能跟别的程序分摊下成本(比如 PowerToys)。

看到这句话很心酸…
我用易语言开发软件,网上罗列的易语言十大罪状中一条,就是编译出来的程序体积“巨大”,一个空窗口竟然都要“几百K”,随便写个程序就要1M多,不简洁,效率低…55555…

1 个赞

这是对比出来的.

我说的 JPEGView 总共不到2MB
Honeyview 之类20MB

我自己都不能接受一个功能简单核心功能不突出的巨大软件…

核心问题是自用的前提下顺便分享…

假如因分享过于困难去影响自己有点难以接受…

据说 Win10 预装了 .net framework 4.5 以上的版本,
即便不打包 .net framework, 说不定也能在别人的 Win10 上运行.

.net的可以要求用户装运行库嘛,这个我觉得还好,能装公共runtime的都不是大问题。

确实现在的框架越来越大了,其实.net还不算特别明显,常见的两种一个是qt,这个好像还只能每个项目自带dll,另一个就是electron了,不光体积大,跑起来还特别吃资源。

所以很多人看不上electron和net系软件,依赖多占用大性能低。
感觉用个胶水语言调用底层库比这些强多了,比如可以Ahk+imgui写,ahk简单,imgui调用GPU,性能无虞。
在这里甚至有很多成品,把几个示例融合下几乎就是一个简陋图片浏览器了。

可是底层库比较难掌握, 用 html、xml 比用 imgui 等底层库自绘界面要简单很多
「 胶水语言+底层库 」适合本来就会用底层库的选手

我还真尝试过AHK的图片浏览器
Quick Picto Viewer v5+
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=65584

近8W行的单个ahk文件
难以想像,就没见过更复杂的ahk"脚本"了
刚去看了下GitHub更新时间 17小时前…
这作者就像他的ID一样 就是个机器人…

虽然这样,但用起来真的一言难尽
我是在用photoshop浏览图片吗?
我在用的到底是个图片浏览器还是图片编辑器?
纯图片浏览速度比JPEGView差远了…

另外一个他的快捷键也写死了…

其实就图片浏览器这个简单东西来说,感觉最大的性能就在于IO了. …
我当前的线程感觉也是阻塞在io了,有点像伪多线程了.

多线程还是难点,目前只能说勉强能运行了.

我用是net6, 这是VS2022的默认选择
听说net6提升很大,IO方面提升宣传也很厉害
不知道是否有必要为了兼容性降到4.8
目前还不算复杂,降一下也很简单

mpv net 就是4.8的
自己fork了一个版本,
写起来倒也没啥差别

添加了音频设备切换,文件夹切换,打开所在文件夹等脚本能实行的功能
关联带图标
核心是添加了一个新的运行模式,只加载同类型的文件
可以同时存在三个mpv,一个音频,一个视频,一个图片(真有人用mpv浏览图片?)互不影响

不过翻译文件没上传上去,我在等源更新看看能不能合并
上一次修改太多合并失败了,这次把功能都添加到一个新文件中
看看能不能合并

不用界面也可以 只读取配置文件,实现灵活配置。
需要用户自行编辑修改 配置模板,只要配置项简单明确或者有说明 就行了。

还没到那一步呢

设置文件都没有,目前都写死了
不过我也是真不想写界面
目前界面连最大化最小化的图标都没有…

复刻JPEGView的缩略图都弄了好久…
最后实现还不完美(缩略图不会随窗口缩小,横屏的缩略图位置有问题等等)
还是折腾这些细节部分

https://s1.328888.xyz/2022/08/17/3Tq0s.gif

可以接受安装运行时。我讨厌electron的理由就是,electron非常大,而且没办法分享部分文件,webview2就是纯纯好文明了。

目前体积小的推荐 Golang

看图软件几百兆,我接受不了。就简单看个图,要不是自带看图软件坏了,我才懒得折腾。

看图软件的话, 试试 imagemagic 的开源库, 很多看图软件都是基于这个开发的.

至于框架, 如果你用c#是逃不开的.

这就跟我小时候穿棉裤一个感觉,不穿吧,冷,穿吧,基本上就没法动了。世间安得两全法啊

2 个赞

手上只有一个blazor wasm的项目冲在前面,未来尝试maui估计也要冲。桌面软件一律用.net framework,写起来差不太多,编译出来小就是香。费劲去给根本不懂技术的用户解释为什么软件这么大,什么是运行时,没必要,他们也不想知道