{"id":25124459,"url":"https://github.com/fadouse/jvmbenchmark","last_synced_at":"2025-04-23T03:32:19.151Z","repository":{"id":263608571,"uuid":"890909182","full_name":"Fadouse/JVMBenchmark","owner":"Fadouse","description":"JVMBenchmark evaluates the performance impact of code obfuscation on Java applications using JVM 17 and JDK 17. It helps developers balance security with potential performance trade-offs.","archived":false,"fork":false,"pushed_at":"2025-02-07T09:19:29.000Z","size":29,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T21:41:22.955Z","etag":null,"topics":["benchmark","java","jvm","performace-testing"],"latest_commit_sha":null,"homepage":"","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/Fadouse.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2024-11-19T11:51:31.000Z","updated_at":"2025-03-20T19:43:49.000Z","dependencies_parsed_at":"2024-11-19T13:45:47.448Z","dependency_job_id":"2f8fefe6-9571-452f-84bc-9a291a62fb1f","html_url":"https://github.com/Fadouse/JVMBenchmark","commit_stats":null,"previous_names":["fadouse/jvmbenchmark"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fadouse%2FJVMBenchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fadouse%2FJVMBenchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fadouse%2FJVMBenchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fadouse%2FJVMBenchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fadouse","download_url":"https://codeload.github.com/Fadouse/JVMBenchmark/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250365822,"owners_count":21418758,"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":["benchmark","java","jvm","performace-testing"],"created_at":"2025-02-08T08:15:39.937Z","updated_at":"2025-04-23T03:32:19.126Z","avatar_url":"https://github.com/Fadouse.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JVMBenchmark\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Test Categories](#test-categories)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact](#contact)\n\n## Introduction\n\n**JVMBenchmark** is a benchmarking tool developed to assess the performance implications of applying obfuscation techniques to Java applications. Built on JVM 17 and JDK 17, this project provides a suite of tests that measure various aspects of JVM performance before and after code obfuscation. Whether you're a developer aiming to secure your code or a performance engineer looking to understand the cost of obfuscation, JVMBenchmark offers valuable insights.\n\n## Features\n\n- **Comprehensive Test Suite:** Covers a wide range of JVM and Java language features.\n- **Categorized Tests:** Organized into logical categories for easier analysis.\n- **Easy Integration:** Simple setup process compatible with existing Java projects.\n- **Detailed Reporting:** Generates detailed performance reports to highlight areas affected by obfuscation.\n- **Extensible Framework:** Easily add new tests to accommodate specific benchmarking needs.\n\n## Prerequisites\n\n- **Java Development Kit (JDK) 17:** Ensure that JDK 17 is installed on your system.\n- **Maven or Gradle:** For building and managing project dependencies.\n- **Obfuscation Tool:** Any Java obfuscator compatible with your project (e.g., ProGuard, DexGuard).\n\n## Installation\n\n1. **Clone the Repository:**\n\n   ```bash\n   git clone https://github.com/yourusername/JVMBenchmark.git\n   cd JVMBenchmark\n   ```\n\n2. **Build the Project:**\n\n   Using Maven:\n\n   ```bash\n   mvn clean install\n   ```\n\n   Using Gradle:\n\n   ```bash\n   gradle build\n   ```\n\n3. **Configure Your Obfuscator:**\n\n   Set up your preferred obfuscation tool and configure it according to your project's requirements.\n\n## Usage\n\n1. **Run Baseline Tests:**\n\n   Execute the test suite without applying obfuscation to gather baseline performance metrics.\n\n   ```bash\n   java -jar JVMBenchmark.jar\n   ```\n\n2. **Apply Obfuscation:**\n\n   Obfuscate your Java application using your chosen obfuscation tool.\n\n3. **Run Obfuscated Tests:**\n\n   Execute the test suite on the obfuscated code to measure performance changes.\n\n   ```bash\n   java -jar JVMBenchmark.jar\n   ```\n\n4. **Compare Results:**\n\n   Analyze the generated reports to identify performance impacts caused by obfuscation.\n\n## Test Categories\n\nJVMBenchmark includes a variety of tests categorized as follows:\n\n- **Data Structure Tests**\n    - `HashTableTest`\n\n- **Sorting Tests**\n    - `SortTest`\n\n- **Garbage Collection Tests**\n    - `GCTest`\n    - `RealTimeGarbageCollectionTest`\n    - `GarbageCollectorComparisonTest`\n\n- **Class Loading \u0026 Unloading Tests**\n    - `ClassLoadingTest`\n    - `ClassUnloadingTest`\n\n- **JIT Compilation Tests**\n    - `JITCompilationTest`\n    - `JITCompilerOptimizationTest`\n    - `StartupAndJITWarmupTest`\n\n- **Language Feature Tests**\n    - `PatternMatchingTest`\n    - `RecordsTest`\n    - `SealedClassesTest`\n    - `LambdaTest`\n    - `IndyTest`\n\n- **Reflection \u0026 Dynamic Proxy Tests**\n    - `ReflectionTest`\n    - `DynamicProxyTest`\n    - `ReflectionAndDynamicProxyTest`\n\n- **Thread \u0026 Concurrency Tests**\n    - `ThreadCreationTest`\n    - `SynchronizationTest`\n    - `ThreadPoolTest`\n    - `ThreadLocalTest`\n\n- **Object \u0026 Memory Management Tests**\n    - `ObjectCreationTest`\n    - `EscapeAnalysisTest`\n    - `MemoryUsageTest`\n\n- **String \u0026 Text Operations Tests**\n    - `StringOperationsTest`\n    - `TextParsingTest`\n    - `StringInterningTest`\n\n- **Stream Operations Tests**\n    - `SequentialStreamTest`\n    - `ParallelStreamTest`\n    - `StreamOperationsChainTest`\n\n- **Serialization Tests**\n    - `JavaSerializationTest`\n\n- **Exception Handling Tests**\n    - `ExceptionHandlingTest`\n\n- **Cache Efficiency Tests**\n    - `CacheEfficiencyTest`\n\n- **Code Analysis \u0026 Instrumentation Overhead Tests**\n    - `CodeAnalysisInstrumentationOverheadTest`\n\n## Contributing\n\nWe welcome contributions from the community! Whether it's adding new tests, improving documentation, or reporting issues, your input is valuable.\n\n1. **Fork the Repository**\n2. **Create a Feature Branch**\n\n   ```bash\n   git checkout -b feature/YourFeature\n   ```\n\n3. **Commit Your Changes**\n4. **Push to the Branch**\n\n   ```bash\n   git push origin feature/YourFeature\n   ```\n\n5. **Open a Pull Request**\n\nPlease ensure your code adheres to the project's coding standards and includes relevant tests.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n## Contact\n\nFor any questions or suggestions, feel free to open an issue or contact [fadouse@turings.org](mailto:fadouse@turings.org).\n\n---\n\n*Happy Benchmarking! 🚀*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffadouse%2Fjvmbenchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffadouse%2Fjvmbenchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffadouse%2Fjvmbenchmark/lists"}