zoukankan      html  css  js  c++  java
  • Sciter/HTMLayout内存占用评测

    先从最基础的Exe文件的执行说起:

    Exe文件要在系统中执行,首先要将Exe文件本身加载入内存中,并且通常在内存中加载完成的Exe所占空间大小会比实际所占的磁盘空间大一些,这是由内存的特殊设定所决定的。其次,由于我们是使用的官方提供的DLL来完成Sciter引擎的工作,并且这种操作不是动态调用的,所以,每次程序运行都会自动加载DLL文件进入内存,然后才能完成引擎的调用操作。这里的Exe和DLL都是PE文件的一种,具有基本相同的特性。

    所以,程序运行时的最小内存(即完全不进行其他分配内存的操作的情况)应该是比Exe+DLL磁盘空间大小多一些,具体的多多少需要根据程序的结构和使用内容而定,不一而足。

    上面的分析只是计算了程序内存分配的下限,另外,程序在执行过程中,由于需要分配一些用于计算和存储用的临时空间(如绘图、计算、渲染、手工分配等),程序的内存占用是无法估计出相对上限的。

    注:如果程序经过UPX等加壳压缩一类的程序处理后,其内存占用还会进一步加大

    下面就SC和HL做一些实际的对比分析:

    环境:VS2010+Win7 32位

    1、Sciter篇

    首先需要看一下所有程序公用的DLL(原版,未压缩):

    sc3

    其体积已达到庞大的3.6M,考虑到内存加载的情况,可以估计实际运行时至少会占用5M左右的内存空间(仅做猜测)。

    plain-win.exe 是Sciter官方自带的HTML内容最简单的win32 Demo程序,自身只有108K,它的样式和内存占用如下:

    内存:

    dem1

    样式:

    dem2

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

    内存:

    Sciter1

    界面:

    Sciter2

    小结:Sciter程序最低运行内存大概在10M左右,使用Tiscript脚本会加剧内存消耗,图片资源过多是消耗内存的重点。

    PS:据说360就是使用SC/HL做的界面,个人觉得更像是SC。SciterFrame程序的图片是360原版的,UI仿照很相似,所以可将360作为源码编译的一个内存对比对象,相比而下,SciterFrame与360确实相差不大(SciterFrame程序内部没有复杂的实际功能)。

    2、HTMLayout篇

    同样,首先看下公用DLL的大小

    hl3

    HTMLayout.dll 只有944K(是否压缩未知),相比Sciter32.dll庞大的3.6M绝对是轻量级的装备了!

    HTMLayoutTest.exe 同样是我使用Win32编写的一个Demo,其界面不含图片,只有一些CSSS!和HTML。

    内存:

    hl1

    界面:

    hl2

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

    内存:

    b

    界面:

    a

    小结: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

    CSDN博客:http://blog.csdn.net/bbdxf
    CNBlogs: http://www.cnblogs.com/bbdxf
    本博客内容为本人原创,如有转载请保留出处!尊重他人就是尊重自己!

  • 相关阅读:
    Redis基础
    Ajax&Json
    Docker基础修炼3--Docker容器及常用命令
    Docker基础修炼2--Docker镜像原理及常用命令
    Docker基础修炼1--Docker简介及快速入门体验
    linux入门系列20--Web服务之LNMP架构实战
    linux入门系列19--数据库管理系统(DBMS)之MariaDB
    linux入门系列18--Web服务之Apache服务2
    linux入门系列18--Web服务之Apache服务1
    linux入门系列17--邮件系统之Postfix和Dovecot
  • 原文地址:https://www.cnblogs.com/bbdxf/p/3366848.html
Copyright © 2011-2022 走看看