oop-vs-procedural

Object-Oriented vs. Procedural: A Profiling Insight into Java Method Usage Patterns

https://github.com/volodya-lombrozo/oop-vs-procedural

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
Last synced: 6 months ago · JSON representation

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
Created almost 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

Object-Oriented vs. Procedural: A Profiling Insight into Java Method Usage Patterns

DOI

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

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 (1)

Dependencies

oop-statistics-filter/src/tools/cccc/Dockerfile docker
  • ubuntu latest build
oop-statistics-filter/src/tools/jdepend/Dockerfile docker
  • ubuntu latest build
oop-statistics-filter/src/tools/sourcemeter/Dockerfile docker
  • ubuntu latest build
cost-of-oop/pom.xml maven
  • 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
cost-of-oop/src/main/profiling/dropwizard/dropwizard-example/pom.xml maven
  • com.fasterxml.jackson.core:jackson-annotations
  • io.dropwizard:dropwizard-core
  • jakarta.validation:jakarta.validation-api
  • org.hibernate.validator:hibernate-validator
cost-of-oop/src/main/profiling/micronaut/micronaut-example/pom.xml maven
  • 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
cost-of-oop/src/main/profiling/struts/apache-struts-example/pom.xml maven
  • 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
cost-of-oop/src/main/profiling/takes/takes-example/pom.xml maven
  • org.takes:takes 1.24.4
cost-of-oop/src/main/profiling/vertx/vert-x-example/pom.xml maven
  • 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
oop-statistics-filter/pom.xml maven
  • 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