diff --git a/.gitignore b/.gitignore index c48ba6b9..4e2e88ef 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,7 @@ *.swp *.swo *.VC.db +*.timing .clang_complete .ycm_extra_conf.py diff --git a/src/test/CxxIndexSampleProjectsTestSuite.h b/src/test/CxxIndexSampleProjectsTestSuite.h index e9308cb5..199f7370 100644 --- a/src/test/CxxIndexSampleProjectsTestSuite.h +++ b/src/test/CxxIndexSampleProjectsTestSuite.h @@ -16,57 +16,60 @@ class CxxIndexSampleProjectsTestSuite : public CxxTest::TestSuite { public: static const bool s_updateExpectedOutput = false; + static const bool s_trackTime = true; void test_index_box2d_project() { #ifdef _WIN32 #ifdef NDEBUG - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2BroadPhase.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2CollideCircle.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2CollideEdge.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2CollidePolygon.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2Collision.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2Distance.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2DynamicTree.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/b2TimeOfImpact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/Shapes/b2ChainShape.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/Shapes/b2CircleShape.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/Shapes/b2EdgeShape.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Collision/Shapes/b2PolygonShape.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Common/b2BlockAllocator.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Common/b2Draw.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Common/b2Math.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Common/b2Settings.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Common/b2StackAllocator.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Common/b2Timer.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/b2Body.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/b2ContactManager.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/b2Fixture.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/b2Island.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/b2World.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/b2WorldCallbacks.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2CircleContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2Contact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2ContactSolver.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Contacts/b2PolygonContact.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2DistanceJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2FrictionJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2GearJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2Joint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2MotorJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2MouseJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2PrismaticJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2PulleyJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2RevoluteJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2RopeJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2WeldJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Dynamics/Joints/b2WheelJoint.cpp")); - processSourceFile(L"Box2D", FilePath("Box2D/Rope/b2Rope.cpp")); + processSourceFiles(L"Box2D", { + FilePath("Box2D/Collision/b2BroadPhase.cpp"), + FilePath("Box2D/Collision/b2CollideCircle.cpp"), + FilePath("Box2D/Collision/b2CollideEdge.cpp"), + FilePath("Box2D/Collision/b2CollidePolygon.cpp"), + FilePath("Box2D/Collision/b2Collision.cpp"), + FilePath("Box2D/Collision/b2Distance.cpp"), + FilePath("Box2D/Collision/b2DynamicTree.cpp"), + FilePath("Box2D/Collision/b2TimeOfImpact.cpp"), + FilePath("Box2D/Collision/Shapes/b2ChainShape.cpp"), + FilePath("Box2D/Collision/Shapes/b2CircleShape.cpp"), + FilePath("Box2D/Collision/Shapes/b2EdgeShape.cpp"), + FilePath("Box2D/Collision/Shapes/b2PolygonShape.cpp"), + FilePath("Box2D/Common/b2BlockAllocator.cpp"), + FilePath("Box2D/Common/b2Draw.cpp"), + FilePath("Box2D/Common/b2Math.cpp"), + FilePath("Box2D/Common/b2Settings.cpp"), + FilePath("Box2D/Common/b2StackAllocator.cpp"), + FilePath("Box2D/Common/b2Timer.cpp"), + FilePath("Box2D/Dynamics/b2Body.cpp"), + FilePath("Box2D/Dynamics/b2ContactManager.cpp"), + FilePath("Box2D/Dynamics/b2Fixture.cpp"), + FilePath("Box2D/Dynamics/b2Island.cpp"), + FilePath("Box2D/Dynamics/b2World.cpp"), + FilePath("Box2D/Dynamics/b2WorldCallbacks.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2CircleContact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2Contact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2ContactSolver.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp"), + FilePath("Box2D/Dynamics/Contacts/b2PolygonContact.cpp"), + FilePath("Box2D/Dynamics/Joints/b2DistanceJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2FrictionJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2GearJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2Joint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2MotorJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2MouseJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2PrismaticJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2PulleyJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2RevoluteJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2RopeJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2WeldJoint.cpp"), + FilePath("Box2D/Dynamics/Joints/b2WheelJoint.cpp"), + FilePath("Box2D/Rope/b2Rope.cpp") + }); #endif // NDEBUG #endif // _WIN32 } @@ -75,21 +78,43 @@ public: { #ifdef _WIN32 #ifdef NDEBUG - processSourceFile(L"Bullet3", FilePath("Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Common/b3AlignedAllocator.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Common/b3Logging.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Common/b3Vector3.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Geometry/b3ConvexHullComputer.cpp")); - processSourceFile(L"Bullet3", FilePath("Bullet3Geometry/b3GeometryUtil.cpp")); + processSourceFiles(L"Bullet3", { + FilePath("Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp"), + FilePath("Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp"), + FilePath("Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp"), + FilePath("Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp"), + FilePath("Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp"), + FilePath("Bullet3Common/b3AlignedAllocator.cpp"), + FilePath("Bullet3Common/b3Logging.cpp"), + FilePath("Bullet3Common/b3Vector3.cpp"), + FilePath("Bullet3Geometry/b3ConvexHullComputer.cpp"), + FilePath("Bullet3Geometry/b3GeometryUtil.cpp") + }); #endif // NDEBUG #endif // _WIN32 } private: + + void processSourceFiles(const std::wstring& projectName, const std::vector& sourceFilePaths) + { + TimeStamp startTime = TimeStamp::now(); + for (const FilePath& filePath : sourceFilePaths) + { + processSourceFile(projectName, filePath); + } + size_t duration = TimeStamp::now().deltaMS(startTime); + if (s_trackTime) + { + const FilePath projectDataRoot = FilePath(L"data/CxxIndexSampleProjectsTestSuite/" + projectName).makeAbsolute(); + + std::ofstream outfile; + outfile.open((projectDataRoot.wstr() + L"/" + projectName + L".timing").c_str(), std::ios_base::app); + outfile << startTime.toString() << " - " << duration << " ms\n"; + outfile.close(); + } + } + void processSourceFile(const std::wstring& projectName, const FilePath& sourceFilePath) { const FilePath projectDataRoot = FilePath(L"data/CxxIndexSampleProjectsTestSuite/" + projectName).makeAbsolute(); @@ -138,13 +163,13 @@ private: CxxParser parser(parserClient, fileRegister); std::shared_ptr command = std::make_shared( - sourceFilePath, + sourceFilePath, indexedPaths, excludedFilters, includedFilters, workingDirectory, utility::concat(std::vector { projectDataSrcRoot }, ApplicationSettings::getInstance()->getHeaderSearchPathsExpanded()), - ApplicationSettings::getInstance()->getFrameworkSearchPathsExpanded(), + ApplicationSettings::getInstance()->getFrameworkSearchPathsExpanded(), std::vector { L"--target=x86_64-pc-windows-msvc" }, "c++1z" );