> On 十月 21, 2016, 8:23 p.m., Benjamin Mahler wrote:
> > Ship It!
Do you have any comments on the test result? Shall we use a small range to
reduce the time of this? The `contains` for a boundry case is using 38+s.
```
[ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/5
Took 38.23282secs to perform 1 'superset.contains(subset)' operations on
superset resources ports(*):[1-1, 3-3, 5-5, 7-7, 9-9, 11-11, 13-13... contains
subset resources ports(*):[1-1, 3-3, 5-5, 7-7, 9-9, 11-11, 13-13...
[ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/5
(38279 ms)
```
Checked the API of `operator<=` for `Value::Ranges`, and found it is already
doing some optimization for this: return false if got one non matched range,
but as my case is a boundry case, so the elapse time is a bit long.
```
bool operator<=(const Value::Ranges& _left, const Value::Ranges& _right)
{
Value::Ranges left;
coalesce(&left, {_left});
Value::Ranges right;
coalesce(&right, {_right});
for (int i = 0; i < left.range_size(); i++) {
// Make sure this range is a subset of a range in right.
bool matched = false;
for (int j = 0; j < right.range_size(); j++) {
if (left.range(i).begin() >= right.range(j).begin() &&
left.range(i).end() <= right.range(j).end()) {
matched = true;
break;
}
}
if (!matched) {
return false;
}
}
return true;
}
```
- Guangya
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/50551/#review153595
-----------------------------------------------------------
On 十月 21, 2016, 11:27 p.m., Guangya Liu wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/50551/
> -----------------------------------------------------------
>
> (Updated 十月 21, 2016, 11:27 p.m.)
>
>
> Review request for mesos, Benjamin Mahler, Klaus Ma, and Jiang Yan Xu.
>
>
> Bugs: MESOS-5700
> https://issues.apache.org/jira/browse/MESOS-5700
>
>
> Repository: mesos
>
>
> Description
> -------
>
> Added benchmark test for `Resources::contains`.
>
>
> Diffs
> -----
>
> src/tests/resources_tests.cpp 27c52e72764fc6db0a510c367a9659596e723504
>
> Diff: https://reviews.apache.org/r/50551/diff/
>
>
> Testing
> -------
>
> make
> make check
>
> ```
> ./bin/mesos-tests.sh --benchmark
> --gtest_filter="*Resources_Contains_BENCHMARK_Test.Contains/*"
> [==========] Running 9 tests from 1 test case.
> [----------] Global test environment set-up.
> [----------] 9 tests from ResourcesContains/Resources_Contains_BENCHMARK_Test
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/0
> Took 16723us to perform 5000 'superset.contains(subset)' operations on
> superset resources cpus(*):1; gpus(*):1; mem(*):128; disk(*):256 contains
> subset resources cpus(*):1; mem(*):128
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/0
> (17 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/1
> Took 9675us to perform 5000 'superset.contains(subset)' operations on
> superset resources cpus(*):1; mem(*):128 contains subset resources cpus(*):1;
> gpus(*):1; mem(*):128; disk(*):256
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/1
> (9 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/2
> Took 10428us to perform 5000 'superset.contains(subset)' operations on
> superset resources cpus(*):1; mem(*):128 contains subset resources cpus(*):1;
> mem(*):128
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/2
> (11 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/3
> Took 2.016892secs to perform 100 'superset.contains(subset)' operations on
> superset resources ports(*):[1-64000] contains subset resources
> ports(*):[1-1, 3-3, 5-5, 7-7, 9-9, 11-11, 13-13...
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/3
> (2041 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/4
> Took 1.322314secs to perform 50 'superset.contains(subset)' operations on
> superset resources ports(*):[1-1, 3-3, 5-5, 7-7, 9-9, 11-11, 13-13...
> contains subset resources ports(*):[1-64000]
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/4
> (1343 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/5
> Took 38.23282secs to perform 1 'superset.contains(subset)' operations on
> superset resources ports(*):[1-1, 3-3, 5-5, 7-7, 9-9, 11-11, 13-13...
> contains subset resources ports(*):[1-1, 3-3, 5-5, 7-7, 9-9, 11-11, 13-13...
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/5
> (38279 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/6
> Took 2.087117secs to perform 100 'superset.contains(subset)' operations on
> superset resources cpus(*):1; gpus(*):1; mem(*):128; disk(*):256; ...
> contains subset resources cpus(*):1; mem(*):128; ports(*):[1-1, 3-3, 5-5,...
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/6
> (2111 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/7
> Took 327807us to perform 50 'superset.contains(subset)' operations on
> superset resources cpus(*):1; mem(*):128; ports(*):[1-1, 3-3, 5-5,...
> contains subset resources cpus(*):1; gpus(*):1; mem(*):128; disk(*):256; ...
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/7
> (351 ms)
> [ RUN ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/8
> Took 38.7907secs to perform 1 'superset.contains(subset)' operations on
> superset resources cpus(*):1; mem(*):128; ports(*):[1-1, 3-3, 5-5,...
> contains subset resources cpus(*):1; mem(*):128; ports(*):[1-1, 3-3, 5-5,...
> [ OK ] ResourcesContains/Resources_Contains_BENCHMARK_Test.Contains/8
> (38839 ms)
> [----------] 9 tests from ResourcesContains/Resources_Contains_BENCHMARK_Test
> (83002 ms total)
>
> [----------] Global test environment tear-down
> [==========] 9 tests from 1 test case ran. (83017 ms total)
> [ PASSED ] 9 tests.
> ```
>
>
> Thanks,
>
> Guangya Liu
>
>