xaizek / etabench (License: GPLv3) (since 2022-09-08)
Benchmark for algorithms that compute I/O ETA
Commit 3bf284af74c1ef876c928db39c9ca98e87ac87c2

Semi-sort algorithms and profiles by name
Author: xaizek
Author date (UTC): 2022-12-30 17:13
Committer name: xaizek
Committer date (UTC): 2022-12-30 17:13
Parent(s): 7087a58cec72e2039de7f7d246ba94b0d1e1a347
Signing key: 99DC5E4DB05F6BE2
Tree: 51d4d8b75e4f374d10ae93b4f27a94b1cce38fe8
File Lines added Lines deleted
README.md 28 28
src/etabench.cpp 13 13
File README.md changed (mode: 100644) (index b9816af..7cc51b8)
... ... algorithms.
68 68 ``` ```
69 69 $ ./etabench --list-algs $ ./etabench --list-algs
70 70 Algorithms: Algorithms:
71 1. Average
72 2. Immediate
73 3. LookBack 20
74 4. Acceleration
75 5. Switch
76 6. Gravity
77 7. Firefox
71 1. Acceleration
72 2. Average
73 3. Firefox
74 4. Gravity
75 5. Immediate
76 6. LookBack 20
77 7. Switch
78 78 8. Window 20 1 8. Window 20 1
79 9. Combined[ Average Immediate ]
80 10. ImmChangeLimit
81 11. AveChangeLimit
82 12. Slowness 1
83 13. Exponential 1
79 9. AveChangeLimit
80 10. Combined[ Average Immediate ]
81 11. Exponential 1
82 12. ImmChangeLimit
83 13. Slowness 1
84 84 14. Smoothing 0.10 14. Smoothing 0.10
85 85 $ ./etabench --algs 4,7,12 $ ./etabench --algs 4,7,12
86 86 ``` ```
 
... ... and no profiles are disabled by default.
93 93 ``` ```
94 94 $ ./etabench --list-profs $ ./etabench --list-profs
95 95 Profiles: Profiles:
96 1. Constant
97 2. Raising 15°
98 3. Raising 30°
99 4. Raising 45°
100 5. Raising 60°
101 6. Raising 75°
102 7. Falling 15°
103 8. Falling 30°
104 9. Falling 45°
105 10. Falling 60°
106 11. Falling 75°
107 12. Saw
108 13. Square
109 14. Step
110 15. Random
111 16. Replay
96 1. Constant
97 2. Falling 15°
98 3. Falling 30°
99 4. Falling 45°
100 5. Falling 60°
101 6. Falling 75°
102 7. Raising 15°
103 8. Raising 30°
104 9. Raising 45°
105 10. Raising 60°
106 11. Raising 75°
107 12. Random
108 13. Replay
109 14. Saw
110 15. Square
111 16. Step
112 112 $ ./etabench --profs 12,13 $ ./etabench --profs 12,13
113 113 ``` ```
114 114
File src/etabench.cpp changed (mode: 100644) (index 6844dc9..7b9a769)
... ... main(int argc, char *argv[])
91 91 int total = args.getTotal(); int total = args.getTotal();
92 92
93 93 auto algs = make_unique_vector<EtaAlg>( auto algs = make_unique_vector<EtaAlg>(
94 std::make_unique<AccelerationAlg>(),
94 95 std::make_unique<AverageAlg>(), std::make_unique<AverageAlg>(),
96 std::make_unique<FirefoxAlg>(),
97 std::make_unique<GravityAlg>(),
95 98 std::make_unique<ImmediateAlg>(), std::make_unique<ImmediateAlg>(),
96 99 std::make_unique<LookBackAlg>(20), std::make_unique<LookBackAlg>(20),
97 std::make_unique<AccelerationAlg>(),
98 100 std::make_unique<SwitchAlg>(), std::make_unique<SwitchAlg>(),
99 std::make_unique<GravityAlg>(),
100 std::make_unique<FirefoxAlg>(),
101 101 std::make_unique<WindowAlg>(20, 1.0f) std::make_unique<WindowAlg>(20, 1.0f)
102 102 ); );
103 103
104 104 auto disabledAlgs = make_unique_vector<EtaAlg>( auto disabledAlgs = make_unique_vector<EtaAlg>(
105 std::make_unique<AveChangeLimitAlg>(),
105 106 std::make_unique<CombinedAlg>(make_unique_vector<EtaAlg>( std::make_unique<CombinedAlg>(make_unique_vector<EtaAlg>(
106 107 std::make_unique<AverageAlg>(), std::make_unique<AverageAlg>(),
107 108 std::make_unique<ImmediateAlg>() std::make_unique<ImmediateAlg>()
108 109 )), )),
110 std::make_unique<ExponentialAlg>(1),
109 111 std::make_unique<ImmChangeLimitAlg>(), std::make_unique<ImmChangeLimitAlg>(),
110 std::make_unique<AveChangeLimitAlg>(),
111 112 std::make_unique<SlownessAlg>(1), std::make_unique<SlownessAlg>(1),
112 std::make_unique<ExponentialAlg>(1),
113 113 std::make_unique<SmoothingAlg>(10) std::make_unique<SmoothingAlg>(10)
114 114 ); );
115 115
116 116 auto profs = make_unique_vector<Profile>( auto profs = make_unique_vector<Profile>(
117 117 std::make_unique<ConstantProfile>(10), std::make_unique<ConstantProfile>(10),
118 std::make_unique<LinearProfile>(total, 15),
119 std::make_unique<LinearProfile>(total, 30),
120 std::make_unique<LinearProfile>(total, 45),
121 std::make_unique<LinearProfile>(total, 60),
122 std::make_unique<LinearProfile>(total, 75),
123 118 std::make_unique<LinearProfile>(total, -15), std::make_unique<LinearProfile>(total, -15),
124 119 std::make_unique<LinearProfile>(total, -30), std::make_unique<LinearProfile>(total, -30),
125 120 std::make_unique<LinearProfile>(total, -45), std::make_unique<LinearProfile>(total, -45),
126 121 std::make_unique<LinearProfile>(total, -60), std::make_unique<LinearProfile>(total, -60),
127 122 std::make_unique<LinearProfile>(total, -75), std::make_unique<LinearProfile>(total, -75),
123 std::make_unique<LinearProfile>(total, 15),
124 std::make_unique<LinearProfile>(total, 30),
125 std::make_unique<LinearProfile>(total, 45),
126 std::make_unique<LinearProfile>(total, 60),
127 std::make_unique<LinearProfile>(total, 75),
128 std::make_unique<RandomProfile>(10, 20),
129 std::make_unique<ReplayProfile>(),
128 130 std::make_unique<SawProfile>(20), std::make_unique<SawProfile>(20),
129 131 std::make_unique<SquareProfile>(20), std::make_unique<SquareProfile>(20),
130 std::make_unique<StepProfile>(10),
131 std::make_unique<RandomProfile>(10, 20),
132 std::make_unique<ReplayProfile>()
132 std::make_unique<StepProfile>(10)
133 133 ); );
134 134
135 135 auto algsIota = std::views::iota(0, (int)algs.size()); auto algsIota = std::views::iota(0, (int)algs.size());
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/etabench

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/etabench

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master