测试读取FreeCAD文件速度

读FCStd文件的速度
次数  时间
100    3S
1000  21S

10000  208S
读取的图形如下:

代码:
setlocale(LC_NUMERIC, "C");
        _putenv("PYTHONPATH=");
        App::Application::Config()["ExeName"] = "FreeCAD";
        App::Application::Config()["ExeVendor"] = "FreeCAD";
        App::Application::Config()["AppDataSkipVendor"] = "true";
        App::Application::Config()["MaintainerUrl"] = "http://www.freecadweb.org/wiki/index.php?title=Main_Page";

        // set the banner (for logging and console)
        App::Application::Config()["CopyrightInfo"] = sBanner;
        App::Application::Config()["AppIcon"] = "freecad";
        App::Application::Config()["SplashScreen"] = "freecadsplash";
        App::Application::Config()["StartWorkbench"] = "StartWorkbench";
        //App::Application::Config()["HiddenDockWindow"] = "Property editor";
        App::Application::Config()["SplashAlignment"] = "Bottom|Left";
        App::Application::Config()["SplashTextColor"] = "#ffffff"; // white
        App::Application::Config()["SplashInfoColor"] = "#c8c8c8"; // light grey
        char *argv[1] = { "E:\\VC\\FreeCAD\\Build\\bin" };
        //char str_test[] = "E:\\VC\\FreeCAD\\Build\\bin";
        //char** pp = &str_test;
        App::Application::init(1, argv);
        App::Application* CurApp = &App::GetApplication();

        SYSTEMTIME sys;
        GetLocalTime(&sys);
        int m1 = int(sys.wMinute);
        int s1 = int(sys.wSecond);
        s1 += m1 * 60;

        App::Document* pDoc = NULL;
        for (int i = 0; i < 10000; i++)
        {
            pDoc = CurApp->openDocument("E:\\FreeCADTest\\Pup.FCStd");
            CurApp->closeDocument(pDoc->getName());

        }


        SYSTEMTIME sys2;
        GetLocalTime(&sys2);
        int m2 = int(sys2.wMinute);
        int s2 = int(sys2.wSecond);

        s2 += m2 * 60;

        int sss = s2 - s1;

        char buf[100];
        sprintf(buf, "%d", sss);
        MessageBoxA(NULL, buf, NULL, MB_OK);

 

 

以下是余测试结果:

Freecad大文件:

Freecad大文件打开关闭10000次

771s

743s

729s

 

Freecad大文件删除单个布尔类型打开关闭10000次

701s

715s

748s

729s

 

10个方形拉伸体打开关闭10000次

491s

495s

 

10个方形基本体打开关闭10000次

266s

265s

 

10个基本体进行布尔运算(5个运算后的对象) 打开关闭10000次

440s

455s

 

打开基本体文件1000次

25s

26s

26s

 

打开freeCAD大文件1000次

69s

70s

69s

 

结论:打开freecad文件时,freecad中图形越多,时间越慢。图形越复杂(拉伸体>基本体)时间越慢。

//

直接循环 10000次

0s

 

打开doc,后续map中查找10000次

0s

 

EP3d解析表格数据(上下文RunID)以及EP3d转换模型(转换为GM)10000次。

92s

96s

92s

88s

87s

98s

 

EP3d解析表格数据(上下文RunID)直接返回 10000次

77s

78s

79s

75s

77s

74s

75s

73s

81s

73s

 

EP3d解析表格数据去除EP3d上下文RunId解析。

1s

1s

 

 

Freecad大文件解析表格,去除EP3d上下文RunId解析,设置不同数据 1000次(表格数据不同)

74s

76s

65s

65s

64s

 

Freecad大文件解析表格,去除EP3d上下文RunId解析,设置不同数据 1000次(表格数矩相同)

64s

63s

 

Freecad大文件解析表格,去除EP3d上下文RunId解析,只设置一个值 1000次

74s

76s

65s

65s

64s

 

Freecad大文件解析表格,去除EP3d上下文RunId解析,设置不同数据 1000次,去除recompute

0s

 

10个基本体文件解析表格,去除EP3d上下文RunId解析,设置不同数据 1000次。

5s

6s

6s

6s

6s

 

结论:1.EP3d通过上下文得数据,和解析端口转换为gm过程会消耗一定时间。(1000次上下文数据 6.5s左右,解析端口转换gm 2s).

2.freecad设置表格数据,recompute会消耗较多时间,图形越复杂也接近重新打开文件的时间(freecad大文件打开关闭1000次69s,不同数据recompute 1000次65s),图形简单消耗时间越少(10个基本体文件1000次时间6s)。

3.freecad设置表格数据时,只是设置1个值和多个值所消耗时间区别不大。设置值不关联图形也需要消耗对应时间。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值