-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Internship] Benchmarking remote execution #346
base: main
Are you sure you want to change the base?
Conversation
@@ -0,0 +1,12 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this file? Do things work without it? We should not need config files like this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to be a file created by IntelliJ to keep the module configuration. The program should work without it.
@NicolasHuertas thank you for doing this. Please reduce the description of this pull request to a short summary of the contribution. Anything else should be moved/reorganized into the |
Examples for Benchmark Testing
Cyclical Dependency Example
This project is designed to evaluate and benchmark the performance of EngFlow's remote execution and caching services. It specifically focuses on testing scenarios involving cyclical-like structures in the dependency graph, which are handled through interfaces and constructor injection.
The program takes a text input file and recursively prints each word with each class (
ClassA
prints a word, thenClassB
, and so on) until the string is empty. The input file should be specified in thedata
attribute of thejava_binary
rule in theBUILD
file.Varying Input Example
The goal of this example project is to test the performance of Engflow's remote execution and caching service for different input sizes. The project involves creating using a class named
Writer
to create a specified number of txt files, each containing 100 random characters, and then reading and printing out their contents with theReader
class.Set Input Example
Since the data dependencies in the previous examples are for files created during runtime. This example uses a genrule to write a set number of txt files instead of a Writer class. This way, the main binary can be built and run after the files are already created.
Binary Input Example
The goal of this example project is to test the performance of Engflow's remote execution and caching service based on the number of input binary files in the dependency graph. The project contains a
genrule
that generates a specified number of Java binaries for thegenbinary
Java library, which are then listed as dependencies in the main binary. TheMain.java
file loops through each generated class and calls itsgreetNum
method.How It Works
Generation of Java Binaries:
genrule
in theBUILD
file generates a specified number of Java classes (Hello1.java
,Hello2.java
, ...,HelloN.java
).greetNum
method that prints a unique message.Main Class Execution:
Main.java
file inbinaryinput
dynamically loads each generated class using reflection.greetNum
method of each class, printing the corresponding message.