-
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
Added first example for benchmark #338
base: main
Are you sure you want to change the base?
Conversation
New Examples AddedVarying Input ExampleThe 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 Project Structure
Usage ExampleTo create and read 10 files, you would run: bazel run //java/com/engflow/internship/varyinginputs/main -- 10 This command will:
Set Input ExampleSince 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. Project Structure
UsageTo generate the test files, build the filegroup target: bazel build //java/com/engflow/internship/setinput/genfile Then, the program can be run with the following command: bazel run //java/com/engflow/internship/varyinginputs/main To modify the amount of files generated, change the value of the Binary Input ExampleThe 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 Project Structure
UsageTo generate the test files, build the bazel build //java/com/engflow/internship/binaryinput:genbinary Then, the program can be run with the following command: bazel run //java/com/engflow/internship/binaryinput:main How It Works
|
Cyclical Dependency Example
Overview
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.
Purpose
The primary objectives of this project are to:
Project Structure
The project is organized into several packages, each representing different components of the cyclical dependency example:
class_a
: ContainsClassA
which depends onClassB
through an interface.class_b
: ContainsClassB
which implementsInterfaceB
and depends onClassC
.class_c
: ContainsClassC
which implementsInterfaceA
and can be initialized with a reference toClassA
.interface_a
: Defines the interfaceInterfaceA
implemented byClassA
andClassC
.interface_b
: Defines the interfaceInterfaceB
implemented byClassB
.main
: Contains theMain
class which processes the input file.input
: Contains the input text file used by theMain
class.How the Program Works
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.