----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/50738/ -----------------------------------------------------------
Review request for mesos and Jiang Yan Xu. Bugs: MESOS-5978 https://issues.apache.org/jira/browse/MESOS-5978 Repository: mesos Description ------- Avoid multiple calls to addable and subtractable in the arithmetic operations in Resources. While adding or subtracting two Resources objects, check for addable() is done in Resources::add(), and check for subtractable() is done in Resources::subtract(). Since the Resource_ class is private and += and -= operators are only called from within Resources::add() and Resources::subtract(); so we do not need to call addable() or subtractable() again. This improves the performance of += and -= operators by about 25%. Diffs ----- include/mesos/resources.hpp 829f39d7c1af3eb4e2efd97e01f87acf7c854bb4 include/mesos/v1/resources.hpp f3c5f315c3701e37aeb8fd468ee288829461338e src/common/resources.cpp b5d20d699553cb5e0aae1718d8a5d73e9192f10a src/v1/resources.cpp 71eedb29ccacfbd616f5088890d759ab669f8ce7 Diff: https://reviews.apache.org/r/50738/diff/ Testing ------- Tests ok. Ran the benchmark for resources arithmetic and observed about 30% improvement in arithmetic operations for scalars. HEAD ==== [==========] Running 4 tests from 1 test case. [----------] Global test environment set-up. [----------] 4 tests from ResourcesOperators/Resources_BENCHMARK_Test [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/0 Took 73155us to perform 50000 'total += r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 Took 78983us to perform 50000 'total -= r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 Took 294658us to perform 50000 'total = total + r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 Took 302820us to perform 50000 'total = total - r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/0 (752 ms) [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/1 Took 4.171325secs to perform 10 'total += r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... Took 4.320892secs to perform 10 'total -= r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... Took 4.239706secs to perform 10 'total = total + r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... Took 4.413952secs to perform 10 'total = total - r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/1 (17196 ms) [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/2 Took 475848us to perform 1000 'total += r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... Took 2270us to perform 1000 'total -= r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... Took 562153us to perform 1000 'total = total + r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... Took 2357us to perform 1000 'total = total - r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/2 (1044 ms) [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/3 Took 60524us to perform 50000 'total += r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... Took 64486us to perform 50000 'total -= r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... Took 343349us to perform 50000 'total = total + r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... Took 342624us to perform 50000 'total = total - r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/3 (812 ms) [----------] 4 tests from ResourcesOperators/Resources_BENCHMARK_Test (19804 ms total) [----------] Global test environment tear-down [==========] 4 tests from 1 test case ran. (19820 ms total) [ PASSED ] 4 tests. With this patch =============== [==========] Running 4 tests from 1 test case. [----------] Global test environment set-up. [----------] 4 tests from ResourcesOperators/Resources_BENCHMARK_Test [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/0 Took 53892us to perform 50000 'total += r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 Took 59655us to perform 50000 'total -= r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 Took 268692us to perform 50000 'total = total + r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 Took 266523us to perform 50000 'total = total - r' operations on cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/0 (649 ms) [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/1 Took 4.120889secs to perform 10 'total += r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... Took 4.354236secs to perform 10 'total -= r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... Took 4.241712secs to perform 10 'total = total + r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... Took 4.417649secs to perform 10 'total = total - r' operations on cpus(0, principal_0, {key_0: value_0}):1; gpus(... [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/1 (17186 ms) [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/2 Took 483411us to perform 1000 'total += r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... Took 2276us to perform 1000 'total -= r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... Took 562171us to perform 1000 'total = total + r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... Took 2353us to perform 1000 'total = total - r' operations on ports(*):[1-2, 4-5, 7-8, 10-11, 13-14, 16-17, 1... [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/2 (1051 ms) [ RUN ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/3 Took 40168us to perform 50000 'total += r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... Took 44792us to perform 50000 'total -= r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... Took 330984us to perform 50000 'total = total + r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... Took 328513us to perform 50000 'total = total - r' operations on cpus(*):1; mem(*):128; disk(test)[persistentId:... [ OK ] ResourcesOperators/Resources_BENCHMARK_Test.Arithmetic/3 (745 ms) [----------] 4 tests from ResourcesOperators/Resources_BENCHMARK_Test (19631 ms total) [----------] Global test environment tear-down [==========] 4 tests from 1 test case ran. (19643 ms total) [ PASSED ] 4 tests. Thanks, Anindya Sinha