C++ Assimp查看器比Assimp C++;相同.obj模型文件上的导入器

C++ Assimp查看器比Assimp C++;相同.obj模型文件上的导入器,c++,3d,assimp,C++,3d,Assimp,assimp库提供了一种从文件加载3D.obj模型的好方法。但是,我发现,伴随它的ASSIMPIVIEW.EXE(我使用3.1.1版)导入M.Obf文件(已经简化了42MB),然后加载相同模型的C++代码要快得多。查看器在几秒钟内加载文件,而我的C++程序(MSVS 2013/WiN64/释放)需要154秒来完成。在VIEW和C++中,我对进口商的后处理标志进行了实验,但是我无法弥补两者之间的差距。p> 对原因有什么想法吗?这是我的C++代码: #include <ctime> #i

assimp库提供了一种从文件加载3D.obj模型的好方法。但是,我发现,伴随它的ASSIMPIVIEW.EXE(我使用3.1.1版)导入M.Obf文件(已经简化了42MB),然后加载相同模型的C++代码要快得多。查看器在几秒钟内加载文件,而我的C++程序(MSVS 2013/WiN64/释放)需要154秒来完成。在VIEW和C++中,我对进口商的后处理标志进行了实验,但是我无法弥补两者之间的差距。p> 对原因有什么想法吗?这是我的C++代码:

#include <ctime>
#include <iostream>
#include <fstream>
#include <vector>

#include "assimp/Importer.hpp"
#include "assimp/scene.h"
#include "assimp/postprocess.h"
#include "assimp/progresshandler.hpp"

using namespace std;

int main(int argc, char* argv[])
{
    Assimp::Importer importer;
    unsigned int post_processing_flags = aiProcess_Triangulate | aiProcess_SortByPType | aiProcess_JoinIdenticalVertices |
            aiProcess_OptimizeMeshes | aiProcess_OptimizeGraph | aiProcess_ImproveCacheLocality;

    cout << "starting load: ";

    auto begin = clock();
    auto scene = importer.ReadFile( "MODEL.obj", post_processing_flags);
    auto end = clock();

    cout << "done!\n";

    double seconds = (end - begin) / CLOCKS_PER_SEC;

    cout << "loading took " << seconds << " seconds" << endl;

    return 0;
}
#包括
#包括
#包括
#包括
#包括“assimp/Importer.hpp”
#包括“assimp/scene.h”
#包括“assimp/postprocess.h”
#包括“assimp/progresshandler.hpp”
使用名称空间std;
int main(int argc,char*argv[])
{
助理:进口商;
unsigned int post_processing_flags=aiProcess_Triangulate | aiProcess_sortByType | aiProcess_joinIdenticalEvents|
aiProcess_OptimizeMesh | aiProcess_OptimizeGraph | aiProcess_ImproveChelicity;

cout找到了我自己的答案:我在Visual Studio中运行它,但在发布模式(F5)下使用调试器启动它。当我启动它时,不进行调试(CTRL+F5)现在,加载模型需要1秒的时间,就像加载ASIMP查看器一样。如果您使用文件资源管理器或命令行从visual studio外部运行可执行文件,这一点同样适用。带调试和不带调试之间仍然存在巨大差异。

您是否在发布模式下编译程序?看起来库是基于头的,因此编译程序的配置将对其产生影响。同时检查编译器优化级别,这将在很大程度上减少加载时间和解析时间。请尝试使用-O3或更好的优化。