oop-vs-procedural
Object-Oriented vs. Procedural: A Profiling Insight into Java Method Usage Patterns
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (9.2%) to scientific vocabulary
Repository
Object-Oriented vs. Procedural: A Profiling Insight into Java Method Usage Patterns
Basic Info
- Host: GitHub
- Owner: volodya-lombrozo
- License: mit
- Language: Java
- Default Branch: main
- Size: 3.21 MB
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
Object-Oriented vs. Procedural: A Profiling Insight into Java Method Usage Patterns
In contemporary software development, the extent to which Java applications utilize object-oriented programming paradigms remains a subject of interest. Given that some studies highlight the significant overhead of OOP, it is crucial to examine how modern applications address this issue and determine if they tend to shift towards procedural approach for enhanced performance. This study evaluates the runtime behavior of 28 open source Java frameworks, with the help of YourKit profiler. We observed a dominant percentage of instance methods and constructors compared to static methods. That signifies a developers preference for the object-oriented approach much more frequently than the procedural approach, despite its associated drawbacks.
Structure of the Repository
This mono-repository contains the following modules:
- cost-of-oop - the main module with the profiling results of 28 Java frameworks. This module contains all scripts used for profiling each program. This includes the program startup procedures, the initialization of the profiler, result exports, and testing scripts such as those for Apache JMeter projects.
- oop-statistics-filter - the module that holds the code that aggregates the profiling results received in the cost-of-oop module. This module creates final CSV files that might be used for further analysis.
Citation
If you use this software in your research, please cite it using the following entry.
Owner
- Name: Volodya Lombrozo
- Login: volodya-lombrozo
- Kind: user
- Company: @Huawei
- Repositories: 60
- Profile: https://github.com/volodya-lombrozo
GitHub Events
Total
- Watch event: 2
- Delete event: 1
- Push event: 1
- Pull request event: 2
- Create event: 1
Last Year
- Watch event: 2
- Delete event: 1
- Push event: 1
- Pull request event: 2
- Create event: 1
Issues and Pull Requests
Last synced: 12 months ago
All Time
- Total issues: 1
- Total pull requests: 15
- Average time to close issues: 4 days
- Average time to close pull requests: about 19 hours
- Total issue authors: 1
- Total pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.53
- Merged pull requests: 7
- Bot issues: 1
- Bot pull requests: 15
Past Year
- Issues: 1
- Pull requests: 15
- Average time to close issues: 4 days
- Average time to close pull requests: about 19 hours
- Issue authors: 1
- Pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.53
- Merged pull requests: 7
- Bot issues: 1
- Bot pull requests: 15
Top Authors
Issue Authors
- renovate[bot] (1)
Pull Request Authors
- renovate[bot] (14)
- dependabot[bot] (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- ubuntu latest build
- ubuntu latest build
- ubuntu latest build
- org.projectlombok:lombok 1.18.32 provided
- org.openjdk.jmh:jmh-core 1.37
- org.openjdk.jmh:jmh-generator-annprocess 1.37
- org.junit.jupiter:junit-jupiter-engine 5.10.2 test
- com.fasterxml.jackson.core:jackson-annotations
- io.dropwizard:dropwizard-core
- jakarta.validation:jakarta.validation-api
- org.hibernate.validator:hibernate-validator
- io.micronaut:micronaut-http-client compile
- io.micronaut:micronaut-http-server-netty compile
- io.micronaut:micronaut-jackson-databind compile
- io.micronaut:micronaut-validation compile
- jakarta.annotation:jakarta.annotation-api compile
- ch.qos.logback:logback-classic
- io.micronaut.test:micronaut-test-junit5 test
- org.junit.jupiter:junit-jupiter-api test
- org.junit.jupiter:junit-jupiter-engine test
- javax.servlet:javax.servlet-api 4.0.1 provided
- javax.servlet:jsp-api 2.0 provided
- org.apache.logging.log4j:log4j-api 2.23.1
- org.apache.logging.log4j:log4j-core 2.23.1
- org.apache.struts:struts2-core 6.3.0.2
- org.takes:takes 1.24.4
- io.vertx:vertx-web
- io.vertx:vertx-junit5 test
- org.junit.jupiter:junit-jupiter-api 5.9.1 test
- org.junit.jupiter:junit-jupiter-engine 5.9.1 test
- com.github.javaparser:javaparser-core 3.25.9 compile
- com.jcabi:jcabi-github 2.0-SNAPSHOT compile
- org.cactoos:cactoos 0.55.0 compile
- org.hamcrest:hamcrest 2.2 compile
- org.projectlombok:lombok 1.18.32 provided
- org.apache.commons:commons-csv 1.10.0
- org.apache.commons:commons-math3 3.6.1
- org.junit.jupiter:junit-jupiter-api 5.10.2 test
- org.junit.jupiter:junit-jupiter-engine 5.10.2 test
- org.junit.jupiter:junit-jupiter-params 5.10.2 test