找回密码
 注册
Simdroid-非首页
查看: 281|回复: 9

【性能套件】自动Pcode 所有m文件【项目开发】

[复制链接]
发表于 2009-4-17 01:07:09 | 显示全部楼层 |阅读模式 来自 重庆
本帖最后由 风天小畜 于 2009-10-26 16:52 编辑

matlab 的Pcode 命令,可以把m文件生成一种中间代码,

好处有:
        1. 代码内容不可见(有时候,一个自己开发的matlab 小程序,愿意分享给别人,却不愿意别人查看或修改代码)
        2. 对于大型程序,pcode 预处理,可以获得可观的性能提升,程序运行效率变高。

但是,matlab自带的pcode 功能比较弱,其缺点有:
        1. 不能对 当前文件夹以及子文件夹内的所有 m文件进行处理
        2. 对于一个大型项目开发,多次修改版本等,需要不停的手工删除 .p文件,又重新预处理 .m文件,实在是麻烦。

程序特点
        1. 通过 myPcode(1) 调用,可以一次性,自动pcode处理工程文件夹内的所有的 M文件(包括若干级的子文件夹)生成P文件。
        2. 在修改程序代码后,可以用 myPcode(2),一次性自动删除工程文件夹内的 P文件。


程序在附件,
解压缩后,放到你的 项目文件夹内即可。

欢迎您下载使用,静候你的测试反馈。


更新附件:包含,统计代码行数,手工备份目录,pcode ,删除p代码等!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2009-4-17 19:42:52 | 显示全部楼层 来自 新疆乌鲁木齐
Simdroid开发平台
本帖最后由 bainhome 于 2009-4-17 19:46 编辑

其实一直比较郁闷的是不清楚这个pcode的机制到底是什么,是否就仅仅是MATLAB公司的一种加密算法?还是从执行效率上能够有很好的提升。这点其实还是比较困惑我的。
另外楼主如果方便的话,能否简单说说这个mycode的编制思路,因为mycode是一个p文件,而我个人对你写这个程序的思路更加感兴趣。因为看你写程序的思路比较接近C而不是MATLAB。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-17 20:31:10 | 显示全部楼层 来自 重庆
其实一直比较郁闷的是不清楚这个pcode的机制到底是什么,是否就仅仅是MATLAB公司的一种加密算法?还是从执行效率上能够有很好的提升。这点其实还是比较困惑我的。
另外楼主如果方便的话,能否简单说说这个mycode的编 ...
bainhome 发表于 2009-4-17 19:42


Pcode 的效率问题,我的猜想:
matlab 解释程序,必定有编译原理里面讲到的前面几个过程。
pcode 可能是做了一些初级的代码解析,转换为初步的中间代码。

这种初步的中间代码的转换,对于小规模的程序,几乎不占用时间。

不过,大型Gui 程序,代码五六万行的,这个初级的词法解析过程,就占用了一些时间。

相对于边执行,边解析。Pcode的预解析对于大型程序,就有了一些性能上的改观。


pcode 可以通过 如下测试:
一个函数,始末加上tic,toc。中间有六种形式的函数调用(包括 多个 nested 函数),还有一些循环和递归,关键是,每个函数又有个gui过程。

那么,通过pcode 后,就可以看出,运行效率有可观的改变。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-4-17 21:01:50 | 显示全部楼层 来自 新疆乌鲁木齐
嗯,跟我想的差不多。几年前曾经做过一个GUI,里面轮换处理不同的、命名无规则的数据文件时,也采用和你差不多的思路。
回复 不支持

使用道具 举报

发表于 2009-4-23 11:42:48 | 显示全部楼层 来自 北京
我一直用的是matlab7.1,楼主的p文件是高版本下的吧,不能向下兼容.
回复 不支持

使用道具 举报

发表于 2009-10-26 16:08:07 | 显示全部楼层 来自 北京
我在2009a下用了一下mypcode(2),把一些不应该删的文件给删掉了
阁下是用哪个版本做的?
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-26 16:46:37 | 显示全部楼层 来自 重庆
8# ljelly


代码全部在里面了。包含 手工备份,统计代码,pcode 和 删除 pcode

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-26 16:57:21 | 显示全部楼层 来自 重庆
我在2009a下用了一下mypcode(2),把一些不应该删的文件给删掉了
阁下是用哪个版本做的?
ljelly 发表于 2009-10-26 16:08


    if ~isempty(expSelf)
        delete(tmpDirStr);
        %dLen02=length(expSelf);
        %for kk=1:1:dLen02
        %    if strcmp(expSelf(kk).name,'myPcode.p')
这一段注释掉的,恢复,在上面一行的strcmp里面,添加不想删除的,就行了
        %        continue;
        %    end
        %    delete(fullfile(curDirStr,expSelf(kk).name));
        %end
    end




-------------------
另外,代码里面,如果,不想用 循环和递归进入每个目录。
可以直接用 genpath 函数,它就返回了目录和子目录内所有路径的信息!
然后再处理!
回复 不支持

使用道具 举报

发表于 2009-10-28 08:31:20 | 显示全部楼层 来自 湖北武汉
不错啊,我还是头一回听说Pcode这个工具的作用,以前都没怎么使用过这个工具,我做的都是写用于后处理的小程序,跟楼主这种大型工程不能比,呵呵
回复 不支持

使用道具 举报

发表于 2009-12-28 21:40:56 | 显示全部楼层 来自 大连理工大学
回去研究研究
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 01:34 , Processed in 0.058218 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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