搜索
bottom↓
回复: 32

stm32f401跑los虚拟机性能测试

[复制链接]

出0入0汤圆

发表于 2019-1-20 14:08:22 | 显示全部楼层 |阅读模式
本帖最后由 muniao 于 2019-1-21 11:27 编辑

整个项目:https://github.com/mclos/los/tree/master/example
///以下是los虚拟机代码-并编译成los数组
void bubbleSort(int *arr,uint32_t len) {
    int  i,j,temp ;
    for (  i = 0; i < len - 1; i++) {
        for (  j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {     
                temp = arr[j+1];      
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
}
int test[224] = {数据省略};
int main(){
     bubbleSort(test,224);
     return 0;
}
//以下是stm32////
printf("los demo\r\n");
  Tick=0;
   bubbleSort(test,224);
   i=Tick;
   printf("time %d(1ms)\r\n",i);
   Tick=0;
   ret=los_app_first(los);  //运行虚拟机-los数组
   i=Tick;
   printf("los time[%x] %d(1ms)\r\n",ret,i);

输出结果[stm32跑84Mhz]:
los demo
time 4(1ms)
los time[11] 792(1ms)

增加:
大家都吐槽比较慢,还比lua慢。
我优化再测试一下也还是700ms。
这么慢,主要是los是基于字节操作的,它的优点是:占rom小(代码才1300行),编译型(编译出来的大小和原生编译差不多大小,可以不加载到ram上运行,在rom上跑)[上面的例子los加 los的脚本代码共8K],只额外占用100多ram。
这个例子放在lua上跑,它的资源占用可能是los的十倍

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2019-1-20 14:58:13 | 显示全部楼层
tick 1ms  用了792ms  是这个意思么 。

出0入0汤圆

 楼主| 发表于 2019-1-20 15:15:26 来自手机 | 显示全部楼层
浮华一生 发表于 2019-1-20 14:58
tick 1ms  用了792ms  是这个意思么 。


是的,直接跑就是耗时4ms,虚拟机上跑就是792ms

出0入0汤圆

发表于 2019-1-20 15:18:14 | 显示全部楼层
muniao 发表于 2019-1-20 15:15
是的,直接跑就是耗时4ms,虚拟机上跑就是792ms

哦 那效率有点低,感觉。  我记得曾经看到老外一个虚拟机 和你一个意思, 也是C虚拟机,说好像比原生C 慢30多倍左右。   

出0入0汤圆

发表于 2019-1-20 15:18:57 | 显示全部楼层
muniao 发表于 2019-1-20 15:15
是的,直接跑就是耗时4ms,虚拟机上跑就是792ms

不过这种做逻辑方面的工作还是可以的,作为一些可以热更新的逻辑控制。对时效不太敏感那种

出0入442汤圆

发表于 2019-1-20 17:03:10 来自手机 | 显示全部楼层
浮华一生 发表于 2019-1-20 15:18
不过这种做逻辑方面的工作还是可以的,作为一些可以热更新的逻辑控制。对时效不太敏感那种 ...

热更新干吗不上rtos之类,动态加载任务。不比上虚拟机强?

出0入0汤圆

发表于 2019-1-20 17:16:25 | 显示全部楼层
wye11083 发表于 2019-1-20 17:03
热更新干吗不上rtos之类,动态加载任务。不比上虚拟机强?

其实你可以把我的话多读几遍,理解一下我本来想表达的意思。 吃饭可以用筷子,叉子,勺子。你说为啥会有这么多种方式呢?

出0入90汤圆

发表于 2019-1-20 18:11:19 | 显示全部楼层
挺好的测试,看完测试结果后,我觉得还是不要玩这个了。
差别太大了。估计玩的人不会多的,无法发扬光大。

出0入0汤圆

发表于 2019-1-20 20:42:03 | 显示全部楼层
如果没有库支持,实用性不大.
脚本语言的优势在于库, 做原生态计算,显然是不合适的,
而建库, 那是一个麻烦事,
PY能流行, 就是因为库很丰富.

出0入0汤圆

发表于 2019-1-20 21:12:26 | 显示全部楼层
这效率,纯粹是玩玩。

出0入0汤圆

发表于 2019-1-21 09:07:23 | 显示全部楼层
浮华一生 发表于 2019-1-20 15:18
不过这种做逻辑方面的工作还是可以的,作为一些可以热更新的逻辑控制。对时效不太敏感那种 ...

200倍,貌似都不如LUA的效率

出0入0汤圆

发表于 2019-1-21 09:08:11 | 显示全部楼层
xjavr 发表于 2019-1-21 09:07
200倍,貌似都不如LUA的效率

解释型的 资源消耗会多些吧

出0入0汤圆

发表于 2019-1-21 09:15:16 | 显示全部楼层
浮华一生 发表于 2019-1-21 09:08
解释型的 资源消耗会多些吧

lua也可以是编译型的,资源我估计差不了多少,但是执行效率上可能要比los要快。

出10入18汤圆

发表于 2019-1-21 09:16:52 | 显示全部楼层
估计los时钟使用TICK,一个tick运行一次,792ms就好解释了。
直接裸跑los是多少呢?

出0入8汤圆

发表于 2019-1-21 09:17:59 | 显示全部楼层
弱弱的问一句:los 是什么东东?

出0入0汤圆

发表于 2019-1-21 09:20:58 | 显示全部楼层
qtechzdh 发表于 2019-1-21 09:16
估计los时钟使用TICK,一个tick运行一次,792ms就好解释了。
直接裸跑los是多少呢? ...

它是虚拟机啊 ! 不需要tick来驱动吧。 它模拟了整个CPU。

出10入18汤圆

发表于 2019-1-21 10:01:26 | 显示全部楼层
浮华一生 发表于 2019-1-21 09:20
它是虚拟机啊 ! 不需要tick来驱动吧。 它模拟了整个CPU。

那也需要时钟驱动啊。

出0入0汤圆

发表于 2019-1-21 10:07:58 | 显示全部楼层
qtechzdh 发表于 2019-1-21 10:01
那也需要时钟驱动啊。

呃 它对于原生C来说,这个其实就是个函数而已,那它执行用的也是系统时钟,84M 那个。 只不过这个函数模拟了一个CPU,执行了一系列自定义的指令。

出0入0汤圆

发表于 2019-1-21 10:30:59 | 显示全部楼层
rmdyj 发表于 2019-1-20 20:42
如果没有库支持,实用性不大.
脚本语言的优势在于库, 做原生态计算,显然是不合适的,
而建库, 那是一个麻烦事 ...


强烈同意,强大的库才是成功普及的关键。arduino为什么能流行,就是因为官方库和第三方库的繁荣

出0入0汤圆

 楼主| 发表于 2019-1-21 11:33:41 | 显示全部楼层
FireBrain 发表于 2019-1-21 10:30
强烈同意,强大的库才是成功普及的关键。arduino为什么能流行,就是因为官方库和第三方库的繁荣 ...

对啊,有库,使用上才方便,这个是c语言的,很多现有的c库都可以直接使用,不过底层api还得移植好,不过有些场合是基本不需要库的,跑逻辑的,这样的应用更适合一点
这是clang编译的,所以只要是clang支持的语言,理论上编译一下,都能在los上跑

出0入0汤圆

 楼主| 发表于 2019-1-21 12:42:37 来自手机 | 显示全部楼层
浮华一生 发表于 2019-1-20 15:18
哦 那效率有点低,感觉。  我记得曾经看到老外一个虚拟机 和你一个意思, 也是C虚拟机,说好像比原生C 慢 ...

我这是刚开始写的时候定位是占用资源少,所以很多操作是按位操作,这很耗时。还有运算指令也耗时间

出0入0汤圆

发表于 2019-1-21 13:13:25 | 显示全部楼层
muniao 发表于 2019-1-21 12:42
我这是刚开始写的时候定位是占用资源少,所以很多操作是按位操作,这很耗时。还有运算指令也耗时间 ...

这个用在上位机还是可以, 单片机的话,本来单片机资源都不太多,而且,很多要求效率,所以感觉这个在单片机上面没有PC的需求多

出0入0汤圆

发表于 2019-1-21 13:16:01 | 显示全部楼层
我觉得lz还是要考虑全面些,毕竟做个虚拟机也挺费时间的。如果说是跑逻辑还是用c语言的话,和直接在mcu上跑c语言有什么区别。还是要选择好语言的,为什么micropython如此火爆,就因为写逻辑快,开发效率高。

出0入0汤圆

 楼主| 发表于 2019-1-21 13:21:09 来自手机 | 显示全部楼层
FireBrain 发表于 2019-1-21 13:16
我觉得lz还是要考虑全面些,毕竟做个虚拟机也挺费时间的。如果说是跑逻辑还是用c语言的话,和直接在mcu上跑 ...

嗯,c语言有它的局限性,不过优点也明显,占用资源低,接下来就把c++也通过编译器,然后运行在los上,这应该比c好一点!

出0入0汤圆

发表于 2019-1-21 13:30:03 | 显示全部楼层
请教lz,我对编译器感兴趣,还没拜读您的代码,提前问一下los的编译器是按照编译原理写的吗?用到词法分析、语法分析和目标生成等概念了吗?

出0入0汤圆

 楼主| 发表于 2019-1-21 13:30:47 来自手机 | 显示全部楼层
浮华一生 发表于 2019-1-21 13:13
这个用在上位机还是可以, 单片机的话,本来单片机资源都不太多,而且,很多要求效率,所以感觉这个在单 ...

这原来是为手环 手表设计的,然后做很多独立表盘啊,计时小应用啊,这种不需要太高效率的,不需要的时候也可以通过手机删掉,也可以通过手机安装新的表盘或其他应用,就看用在哪里咯!

出0入0汤圆

 楼主| 发表于 2019-1-21 13:31:51 | 显示全部楼层
FireBrain 发表于 2019-1-21 13:30
请教lz,我对编译器感兴趣,还没拜读您的代码,提前问一下los的编译器是按照编译原理写的吗?用到词法分析 ...

是改clang而来的

出0入0汤圆

发表于 2019-1-21 13:39:13 | 显示全部楼层

bin
│      as.exe        
│      clang.exe        -los编译器
│      los.exe          -los解释器
│      losld.exe        -los链接
│      losshell.exe     -los的shell

这些不开源是吧

出0入8汤圆

发表于 2019-1-21 13:39:18 | 显示全部楼层
唉,问了这么久,都没人给个链接,扫盲一下 LOS 是什么。

出0入0汤圆

 楼主| 发表于 2019-1-21 13:43:51 | 显示全部楼层
security 发表于 2019-1-21 13:39
唉,问了这么久,都没人给个链接,扫盲一下 LOS 是什么。

楼主位有整个项目的github的,现也附上:https://github.com/mclos/los

出0入0汤圆

 楼主| 发表于 2019-1-21 13:45:14 | 显示全部楼层
FireBrain 发表于 2019-1-21 13:39
bin
│      as.exe        
│      clang.exe        -los编译器

clang是开源的[http://llvm.org/],losld是不开源的

出0入8汤圆

发表于 2019-1-21 13:49:10 | 显示全部楼层
muniao 发表于 2019-1-21 13:43
楼主位有整个项目的github的,现也附上:https://github.com/mclos/los

,这样看来,在楼主位,你应该给出介绍,至少照顾一下从没听过的小白。
用:https://mclos.github.io/ 或许更直接明显点。
不然说实在的,我看到 LOS, google 了半天,都还没能命中。

出0入0汤圆

 楼主| 发表于 2019-1-23 09:31:32 | 显示全部楼层
试着优化一下,效率还是比较低,跑同一个冒泡算法。效率相差150倍
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 23:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表