{"id":17126433,"url":"https://github.com/kellpossible/java-vector-math-performance-test","last_synced_at":"2025-03-24T03:45:07.723Z","repository":{"id":71253144,"uuid":"133121194","full_name":"kellpossible/java-vector-math-performance-test","owner":"kellpossible","description":"review performance for several methods/libraries available for vector/matrix math operations.","archived":false,"fork":false,"pushed_at":"2018-05-12T10:53:36.000Z","size":881,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-29T10:15:41.239Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://kellpossible.github.io/libgdx-atc-sim/VectorLibraryPerformanceTest/VectorLibraryPerformanceTest.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kellpossible.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-12T06:41:49.000Z","updated_at":"2018-05-12T11:13:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"29280794-3634-4d99-8088-ff7ff9523af0","html_url":"https://github.com/kellpossible/java-vector-math-performance-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellpossible%2Fjava-vector-math-performance-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellpossible%2Fjava-vector-math-performance-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellpossible%2Fjava-vector-math-performance-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellpossible%2Fjava-vector-math-performance-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kellpossible","download_url":"https://codeload.github.com/kellpossible/java-vector-math-performance-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245206529,"owners_count":20577582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T18:47:59.521Z","updated_at":"2025-03-24T03:45:07.698Z","avatar_url":"https://github.com/kellpossible.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align = \"center\"\u003e\n    \u003ca href=\"https://github.com/kellpossible/java-vector-math-performance-test/blob/master/LICENSE.txt\"\u003e\n         \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"LICENSE\"\u003e\n    \u003c/a\u003e\n    \u003cstrong\u003e| \u003ca href=\"https://kellpossible.github.io/libgdx-atc-sim/VectorLibraryPerformanceTest/VectorLibraryPerformanceTest.html\"\u003eProject Documentation\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\n\n# Vector Library Performance Test\nThe purpose of this performance test was to review several methods/libraries\navailable for vector/matrix math operations for use in\n[libgdx-atc-sim](https://github.com/kellpossible/libgdx-atc-sim)\n\n+ [Apache commons-math](https://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html)\n+ [Pythagoras Library](https://github.com/samskivert/pythagoras)\n+ [Yeppp! Library](http://www.yeppp.info/)\n+ LWJGL OpenCL (TODO)\n\nVector classes using double precision floating point numbers were used. Where\nclasses were missing, a plain java alternative was implemented.\n\n## Performance Test Results\n\n\n|     Benchmark     | Samples | Score |  Error  | units |\n|-------------------|---------|-------|---------|-------|\n| testApacheCommons |      20 | 1.916 | ± 0.428 | ops/s |\n| testPythagoras    |      20 | 7.572 | ± 0.355 | ops/s |\n| testYepp          |      20 | 0.205 | ± 0.001 | ops/s |\n\n\n## Review of Libraries\n### Apache commons-math\n\n+ \\+ lots of other classes we may want to use\n+ \\- bloated\n+ \\~ performance is okay but not the best.\n\n### Pythagoras\nThe Pythagoras has the best performance. It is also small\n\n+ \\+ very small\n+ \\+ performance\n+ \\- no unit tests for double class\n\n### Yeppp!\nYeppp doesn't have the best performance for our application, and we'd have alter\nthe design to cater for performance to get any kind of benefit.\n\n+ \\+ small\n+ \\+ popular\n+ \\- poor performance in java and for our application\n\n\n[c++ - Performance with Yeppp! is slower than native implementation - Stack Overflow](http://stackoverflow.com/questions/26504111/performance-with-yeppp-is-slower-than-native-implementation)\n\u003e Yeppp! is optimized for processing arrays of 100+ elements.\n\u003e It is not efficient on small arrays (like length-3 array in your example)\n\u003e due to limited ability to use SIMD and overheads of function call, dynamic\n\u003e dispatching, and parameter checks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellpossible%2Fjava-vector-math-performance-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkellpossible%2Fjava-vector-math-performance-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellpossible%2Fjava-vector-math-performance-test/lists"}