Sciter/HTMLayout内存占用评测
先从最基础的Exe文件的执行说起:
Exe文件要在系统中执行,首先要将Exe文件本身加载入内存中,并且通常在内存中加载完成的Exe所占空间大小会比实际所占的磁盘空间大一些,这是由内存的特殊设定所决定的。其次,由于我们是使用的官方提供的DLL来完成Sciter引擎的工作,并且这种操作不是动态调用的,所以,每次程序运行都会自动加载DLL文件进入内存,然后才能完成引擎的调用操作。这里的Exe和DLL都是PE文件的一种,具有基本相同的特性。
所以,程序运行时的最小内存(即完全不进行其他分配内存的操作的情况)应该是比Exe+DLL磁盘空间大小多一些,具体的多多少需要根据程序的结构和使用内容而定,不一而足。
上面的分析只是计算了程序内存分配的下限,另外,程序在执行过程中,由于需要分配一些用于计算和存储用的临时空间(如绘图、计算、渲染、手工分配等),程序的内存占用是无法估计出相对上限的。
注:如果程序经过UPX等加壳压缩一类的程序处理后,其内存占用还会进一步加大。
下面就SC和HL做一些实际的对比分析:
环境:VS2010+Win7 32位
1、Sciter篇
首先需要看一下所有程序公用的DLL(原版,未压缩):

其体积已达到庞大的3.6M,考虑到内存加载的情况,可以估计实际运行时至少会占用5M左右的内存空间(仅做猜测)。
plain-win.exe 是Sciter官方自带的HTML内容最简单的win32 Demo程序,自身只有108K,它的样式和内存占用如下:
内存:

样式:

SciterFrame.exe是我自己写的一个MFC框架下测试用的Frame,资源内嵌,Release静态编译下大小3.85M,和plain-win.exe 相比,使用了16张,共252K左右大小的图片,使用了Tiscript,由于素材和样式UI都来自360,我把它与360自身对比截图,其数据如下:
内存:

界面:

小结:Sciter程序最低运行内存大概在10M左右,使用Tiscript脚本会加剧内存消耗,图片资源过多是消耗内存的重点。
PS:据说360就是使用SC/HL做的界面,个人觉得更像是SC。SciterFrame程序的图片是360原版的,UI仿照很相似,所以可将360作为源码编译的一个内存对比对象,相比而下,SciterFrame与360确实相差不大(SciterFrame程序内部没有复杂的实际功能)。
2、HTMLayout篇
同样,首先看下公用DLL的大小:

HTMLayout.dll 只有944K(是否压缩未知),相比Sciter32.dll庞大的3.6M绝对是轻量级的装备了!
HTMLayoutTest.exe 同样是我使用Win32编写的一个Demo,其界面不含图片,只有一些CSSS!和HTML。
内存:

界面:

mfc_browse.exe 也是官方提供的最简单的一个win32框架,其数据如下:
内存:

界面:

小结:Htmlayout程序的最小内存大约5.6M左右,使用CSSS!轻微消耗内存(复杂功能消耗情况未知),图片同样是内存消耗的重点。
综述:
我们很容易猜出,Tiscript是SC/HL内存消耗的分水岭,差距大约5M左右,但是面对Sciter强大的脚本功能(特别是内置Sqlite等),类Javascript的脚本设计,极大地方便了UI与底层的对话,如果不是对于内存要求特别严格的情况下,还是建议使用Sciter。
在发布程序时,Sciter程序建议UPX压缩一下,个人实际测试,主程序压缩率22.3%,Sciter.dll 压缩后1.27M。
个人CSDN博客: http://blog.csdn.net/bbdxf
cnBlogs博客:http://www.cnblogs.com/bbdxf
Sciter/HTMLayout内存占用评测的更多相关文章
- paip. 内存占用少的php ide选择评测总结
paip. 内存占用少的php ide选择评测总结 php ide主要以内存占用为标准进行评测.. 其次以软件体积为标准.. 作者Attilax 艾龙, EMAIL:1466519819@qq.c ...
- Android应用性能测试之CPU和内存占用
最近发现自己学的很多东西没有做好积淀的工作,也萌生了写一些东西的念头.本人也没有写博客的习惯,下边就写一下手机端的性能测试. 最近公司,要我们从事对竞品的性能测试,我负责CPU和内存的性能测试,下面就 ...
- [Android Pro] Android应用性能测试之CPU和内存占用(转载)
首先稍做分析一下测试环境:我们知道CPU和内存占用是一个实时变化的状态,而市面上还没有具体的哪款android应用能做到实时监控CPU和内存占用并使用log日志保存.考虑到android的底层框架是基 ...
- Linux系统下输出某进程内存占用信息的c程序实现
在实际工作中有时需要程序打印出某个进程的内存占用情况以作参考, 下面介绍一种通过Linux下的伪文件系统/proc 计算某进程内存占用的程序实现方法. 首先, 为什么会有所谓的 伪文件 呢. Linu ...
- Linux系统内存占用90%以上 ?
问题: [root@dbserver01 zx_epp_db]# free -m total used free shared buffers cached Mem: 15953 14706 1246 ...
- android应用内存占用测试(每隔一秒打印procrank的信息)
1.内存占用 对于智能手机而言,内存大小是固定的:因此,如果单个app的内存占用越小,手机上可以安装运行的app就越多:或者说app的内存占用越小,在手机上运行就会越流畅.所以说,内存占用的大小,也是 ...
- 怎样使java程序减少内存占用(转载)
本文收集网上关于减少java程序占用的一些小知识点 (1)别用new Boolean(). 在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolea ...
- C# 处理应用程序减少内存占用
SetProcessWorkingSetSize减少内存占用 系统启动起来以后,内存占用越来越大,使用析构函数.GC.Collect什么的也不见效果,后来查了好久,找到了个办法,就是使用 SetPro ...
- rabbitmq binary/other_system内存占用很高
最近有台服务器的MQ应用占用内存比较偏高,如下: 但是看控制台本身内存中消息积压并不多, 查看rabbtmqctl发现,binary data和other data占据了绝大部分的内存,如下: {me ...
随机推荐
- 【BZOJ】【2940】【POI2000】条纹
博弈论 一开始想成S-Nim了……后来发现不一样= =石子是一定得取的,但是这个铺条纹就像Crosses and Crosses一样,是可以铺到中间,左右留下空隙但是对手无处可放的…… 所以就是两道题 ...
- 【BZOJ】【1115】【POI2009】石子游戏KAM
博弈论 这个题……一看就觉得很捉急啊= =肿么办? 灵光一现:差分一下~ 那么我们看一下差分以后,从第 i 堆中拿走 k 个石子变成了:a[i]-=k; a[i+1]+=k; 嗯这就转化成了阶梯博弈! ...
- [转载]JS中如何定义全局变量
三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){ alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...
- 山寨小小军团开发笔记 之 Arrow Projectile
好久没怎么更新博客了,今天抽空来一篇,讨论一下弓箭的轨迹生成. 一.原理 弓箭的轨迹本质就是一个数学问题,使用一个 bezier 曲线公式就可以插值生成.得到轨迹后,做一个lookAt就可以了. 二. ...
- PHP Zend Studio9.0怎么把代码搞成和服务器端的同步(就是直接在服务器端修改)
Zend Studio 可以直接通过Remote System的方式直接连接服务器端的代码,就是可以直接修改服务器端的代码,不过修改的时间小心点,修改就会立即生效的. 选择Remote Systems ...
- D&F学数据结构系列——二叉堆
二叉堆(binary heap) 二叉堆数据结构是一种数组对象,它可以被视为一棵完全二叉树.同二叉查找树一样,堆也有两个性质,即结构性和堆序性.对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿 ...
- hdu1162Eddy's picture
http://acm.hdu.edu.cn/showproblem.php?pid=1162 最小生成树 #include<iostream> #include<stdio.h> ...
- lintcode:四个数之和
题目 四数之和 给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d). 样例 例如,对于给定的整数数组S=. 满足要求的四元组集合为: (-1, 0 ...
- 毕向东JAVA视频视频讲解(第八课)
继承的好处: 1,提高了代码的复用性. 2,让类与类之间产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有一个 ...
- web服务器和应用服务器概念比较
转自:http://hi.baidu.com/lclkathy/blog/item/dae3be36763a47370b55a970.html 一 常见的WEB服务器和应用服务器 在UNIX和LINU ...