Skip to content
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

expression: go generate vectorized addtime functions #12224

Merged
merged 12 commits into from
Sep 26, 2019

Conversation

SunRunAway
Copy link
Contributor

@SunRunAway SunRunAway commented Sep 17, 2019

What problem does this PR solve?

Part of #12058

Use go template to generate vectorized ADDTIME functions.

  • builtinAddDatetimeAndDurationSig
  • builtinAddDatetimeAndStringSig
  • builtinAddDurationAndDurationSig
  • builtinAddDurationAndStringSig
  • builtinAddStringAndDurationSig
  • builtinAddStringAndStringSig
  • builtinAddDateAndDurationSig
  • builtinAddDateAndStringSig
  • builtinAddTimeDateTimeNullSig
  • builtinAddTimeStringNullSig
  • builtinAddTimeDurationNullSig

By hand write a cast function for unit test.

  • builtinCastTimeAsDurationSig

What is changed and how it works?

  • addtime
name                                                                         old time/op    new time/op    delta
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDatetimeAndDurationSig12     174µs ±16%      62µs ± 4%   -64.28%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDatetimeAndStringSig12      1.37ms ± 4%    1.19ms ± 7%   -13.15%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDurationAndDurationSig12    74.5µs ±79%     5.3µs ± 9%   -92.89%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDurationAndStringSig12      1.17ms ± 3%    1.10ms ± 3%    -5.56%  (p=0.016 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddStringAndDurationSig12      1.48ms ± 2%    1.41ms ± 3%    -4.83%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddStringAndStringSig12        2.33ms ± 3%    2.25ms ± 3%      ~     (p=0.056 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDateAndDurationSig12         409µs ±14%     341µs ± 0%   -16.66%  (p=0.016 n=5+4)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDateAndStringSig12          1.73ms ± 4%    1.68ms ± 6%      ~     (p=0.310 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeDateTimeNullSig12        142µs ±68%       0µs ± 3%   -99.95%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeStringNullSig12         43.0µs ±42%     2.1µs ± 3%   -95.10%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeDurationNullSig12       22.5µs ±11%     0.1µs ± 3%   -99.69%  (p=0.016 n=4+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDatetimeAndDurationSig12           100µs ± 5%      62µs ± 4%   -37.26%  (p=0.008 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDatetimeAndStringSig12            1.47ms ± 3%    1.41ms ± 1%      ~     (p=0.056 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDurationAndDurationSig12          29.7µs ± 2%     4.8µs ± 5%   -83.69%  (p=0.008 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDurationAndStringSig12            1.18ms ± 7%    1.12ms ± 8%      ~     (p=0.095 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddStringAndDurationSig12            1.53ms ± 5%    1.57ms ± 8%      ~     (p=0.841 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddStringAndStringSig12              2.46ms ± 3%    2.43ms ± 6%      ~     (p=0.690 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDateAndDurationSig12               352µs ± 6%     315µs ±10%   -10.59%  (p=0.032 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDateAndStringSig12                1.58ms ± 4%    1.66ms ±11%      ~     (p=0.421 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeDateTimeNullSig12             12.3µs ± 3%     0.1µs ± 3%   -99.48%  (p=0.008 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig12               5.14µs ± 3%    2.02µs ± 5%   -60.80%  (p=0.008 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeDurationNullSig12             7.57µs ± 2%    0.06µs ± 3%   -99.17%  (p=0.008 n=5+5)

name                                                                         old alloc/op   new alloc/op   delta
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDatetimeAndDurationSig12     106kB ±24%       0kB       -100.00%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDatetimeAndStringSig12       210kB ±11%      96kB ± 0%   -54.31%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDurationAndDurationSig12   65.5kB ±136%     0.0kB       -100.00%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDurationAndStringSig12       147kB ± 8%      97kB ± 0%   -34.12%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddStringAndDurationSig12       271kB ±10%     190kB ± 0%   -29.88%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddStringAndStringSig12         386kB ± 5%     292kB ± 0%   -24.28%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDateAndDurationSig12         189kB ± 8%     101kB ± 0%   -46.54%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDateAndStringSig12           318kB ± 5%     212kB ± 0%   -33.45%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeDateTimeNullSig12        126kB ±36%       0kB       -100.00%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeStringNullSig12         44.4kB ±22%     0.0kB       -100.00%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeDurationNullSig12      39.3kB ±115%     0.0kB       -100.00%  (p=0.008 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDatetimeAndDurationSig12           0.00B          0.00B           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDatetimeAndStringSig12             102kB ± 0%     102kB ± 0%      ~     (p=0.841 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDurationAndDurationSig12           0.00B          0.00B           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDurationAndStringSig12            96.2kB ± 0%    96.4kB ± 0%      ~     (p=0.690 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddStringAndDurationSig12             198kB ± 0%     198kB ± 0%      ~     (p=0.310 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddStringAndStringSig12               290kB ± 0%     290kB ± 0%      ~     (p=0.841 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddDateAndDurationSig12              98.2kB ± 0%    98.2kB ± 0%    -0.00%  (p=0.000 n=5+4)
VectorizedBuiltinTimeFuncGenerated/builtinAddDateAndStringSig12                 211kB ± 0%     210kB ± 0%      ~     (p=0.222 n=5+5)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeDateTimeNullSig12              0.00B          0.00B           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig12                0.00B          0.00B           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeDurationNullSig12              0.00B          0.00B           ~     (all equal)

name                                                                         old allocs/op  new allocs/op  delta
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDatetimeAndDurationSig12      0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDatetimeAndStringSig12       5.82k ± 0%     5.82k ± 0%      ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDurationAndDurationSig12      0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDurationAndStringSig12       5.88k ± 0%     5.88k ± 0%      ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddStringAndDurationSig12       9.26k ± 0%     9.26k ± 0%    +0.01%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddStringAndStringSig12         15.3k ± 0%     15.3k ± 0%    +0.01%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDateAndDurationSig12         3.96k ± 0%     3.96k ± 0%      ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddDateAndStringSig12           10.5k ± 0%     10.5k ± 0%    +0.01%  (p=0.008 n=5+5)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeDateTimeNullSig12         0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeStringNullSig12           0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeEvalOneVecGenerated/builtinAddTimeDurationNullSig12         0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDatetimeAndDurationSig12            0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDatetimeAndStringSig12             6.18k ± 0%     6.18k ± 0%      ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDurationAndDurationSig12            0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDurationAndStringSig12             5.84k ± 0%     5.84k ± 0%      ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddStringAndDurationSig12             9.65k ± 0%     9.65k ± 0%      ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddStringAndStringSig12               15.1k ± 0%     15.1k ± 0%      ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDateAndDurationSig12               3.86k ± 0%     3.86k ± 0%      ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddDateAndStringSig12                 10.4k ± 0%     10.4k ± 0%      ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeDateTimeNullSig12               0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig12                 0.00           0.00           ~     (all equal)
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeDurationNullSig12               0.00           0.00           ~     (all equal)
  • cast:
name                                                        old time/op    new time/op    delta
VectorizedBuiltinCastFunc/builtinCastTimeAsDurationSig--12    48.7µs ± 4%    32.0µs ± 4%  -34.27%  (p=0.008 n=5+5)

name                                                        old alloc/op   new alloc/op   delta
VectorizedBuiltinCastFunc/builtinCastTimeAsDurationSig--12     0.00B          0.00B          ~     (all equal)

name                                                        old allocs/op  new allocs/op  delta
VectorizedBuiltinCastFunc/builtinCastTimeAsDurationSig--12      0.00           0.00          ~     (all equal)

Check List

Tests

  • Unit test

@SunRunAway SunRunAway changed the title go generate vectorized addtime functions executor: go generate vectorized addtime functions Sep 17, 2019
@SunRunAway SunRunAway force-pushed the addTimeFunctionClass2 branch 2 times, most recently from 667a001 to 165d5ec Compare September 17, 2019 09:44
@SunRunAway SunRunAway requested review from Reminiscent, qw4990, XuHuaiyu and zz-jason and removed request for Reminiscent September 17, 2019 09:51
@codecov
Copy link

codecov bot commented Sep 17, 2019

Codecov Report

Merging #12224 into master will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             master     #12224   +/-   ##
===========================================
  Coverage   79.7697%   79.7697%           
===========================================
  Files           462        462           
  Lines        102337     102337           
===========================================
  Hits          81634      81634           
  Misses        14832      14832           
  Partials       5871       5871

@SunRunAway
Copy link
Contributor Author

/run-all-tests

@qw4990
Copy link
Contributor

qw4990 commented Sep 17, 2019

/run-unit-test

@zz-jason
Copy link
Member

in the performance benchmarks for add_time:

name                                                                     old time/op    new time/op     delta
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig--12         2.98µs ± 4%    77.28µs ±91%  +2494.20%  (p=0.008 n=5+5)

seems there is a performance regression?

@SunRunAway
Copy link
Contributor Author

SunRunAway commented Sep 18, 2019

in the performance benchmarks for add_time:

name                                                                     old time/op    new time/op     delta
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig--12         2.98µs ± 4%    77.28µs ±91%  +2494.20%  (p=0.008 n=5+5)

seems there is a performance regression?

I think it's the problem of the benchmark framework.
vecEvalString needs to apply its results into a *chunk.Column in benchmarkVecBuiltinFunc, meanwhile evalString does not need in NonVecBuiltinFunc

@qw4990 will fix it later.

@qw4990
Copy link
Contributor

qw4990 commented Sep 18, 2019

in the performance benchmarks for add_time:

name                                                                     old time/op    new time/op     delta
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig--12         2.98µs ± 4%    77.28µs ±91%  +2494.20%  (p=0.008 n=5+5)

seems there is a performance regression?

I think it's the problem of the benchmark framework.
vecEvalString needs to apply its results into a *chunk.Column in benchmarkVecBuiltinFunc, meanwhile evalString does not need in NonVecBuiltinFunc

I will fix it soon.

@SunRunAway SunRunAway force-pushed the addTimeFunctionClass2 branch from 3e561d1 to 226befe Compare September 18, 2019 07:40
@SunRunAway SunRunAway changed the title executor: go generate vectorized addtime functions expression: go generate vectorized addtime functions Sep 18, 2019
@qw4990
Copy link
Contributor

qw4990 commented Sep 18, 2019

in the performance benchmarks for add_time:

name                                                                     old time/op    new time/op     delta
VectorizedBuiltinTimeFuncGenerated/builtinAddTimeStringNullSig--12         2.98µs ± 4%    77.28µs ±91%  +2494.20%  (p=0.008 n=5+5)

seems there is a performance regression?

I think it's the problem of the benchmark framework.
vecEvalString needs to apply its results into a *chunk.Column in benchmarkVecBuiltinFunc, meanwhile evalString does not need in NonVecBuiltinFunc

I will fix it soon.

It is fixed, so please update the benchmark results.

@SunRunAway
Copy link
Contributor Author

SunRunAway commented Sep 21, 2019

@SunRunAway SunRunAway force-pushed the addTimeFunctionClass2 branch 2 times, most recently from 2aa3c49 to 71233d5 Compare September 23, 2019 04:22
@SunRunAway SunRunAway force-pushed the addTimeFunctionClass2 branch from 0e64be2 to c4b7fbf Compare September 24, 2019 09:38
@SunRunAway
Copy link
Contributor Author

/run-unit-test

Copy link
Contributor

@qw4990 qw4990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost LGTM, but please resolve conflicts. @SunRunAway

@SunRunAway SunRunAway force-pushed the addTimeFunctionClass2 branch from c4b7fbf to adfe565 Compare September 26, 2019 03:35
@SunRunAway
Copy link
Contributor Author

Almost LGTM, but please resolve conflicts. @SunRunAway

Rebased, conflicts resolved in builtin_cast_vec.go, builtin_cast_vec_test.go and builtin_time_vec_test.go

@SunRunAway SunRunAway requested a review from qw4990 September 26, 2019 03:49
@zyxbest
Copy link

zyxbest commented Sep 26, 2019

/run-unit-test

Copy link
Contributor

@qw4990 qw4990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@qw4990 qw4990 added status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Sep 26, 2019
@sre-bot
Copy link
Contributor

sre-bot commented Sep 26, 2019

/run-all-tests

@sre-bot
Copy link
Contributor

sre-bot commented Sep 26, 2019

@SunRunAway merge failed.

@SunRunAway
Copy link
Contributor Author

/merge

@sre-bot
Copy link
Contributor

sre-bot commented Sep 26, 2019

/run-all-tests

@sre-bot sre-bot merged commit 35e308f into pingcap:master Sep 26, 2019
@SunRunAway SunRunAway deleted the addTimeFunctionClass2 branch September 26, 2019 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/expression status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants