IAP GITLAB
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
corsika
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Air Shower Physics
corsika
Commits
fd59a064
Commit
fd59a064
authored
4 years ago
by
Dominik Baack
Committed by
ralfulrich
4 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Bit more cleanup
parent
c84760b5
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!280
Refactory 2020
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
corsika/detail/framework/analytics/ClassTimer.inl
+16
-42
16 additions, 42 deletions
corsika/detail/framework/analytics/ClassTimer.inl
corsika/framework/analytics/ClassTimer.hpp
+13
-13
13 additions, 13 deletions
corsika/framework/analytics/ClassTimer.hpp
with
29 additions
and
55 deletions
corsika/detail/framework/analytics/ClassTimer.inl
+
16
−
42
View file @
fd59a064
...
@@ -24,84 +24,58 @@ namespace corsika {
...
@@ -24,84 +24,58 @@ namespace corsika {
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
:
obj_
(
obj
)
{}
:
ClassTimerImpl
<
TClass
>
(
obj
)
{}
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
TRet
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
call
(
TArgs
...
args
)
{
TRet
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
call
(
TArgs
...
args
)
{
start_
=
TClock
::
now
();
this
->
start_
=
ClassTimerImpl
<
TClass
>::
TClock
::
now
();
auto
tmp
=
(
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
auto
tmp
=
(
this
->
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
timeDiff_
=
std
::
chrono
::
duration_cast
<
TDuration
>
(
TClock
::
now
()
-
start_
);
this
->
timeDiff_
=
std
::
chrono
::
duration_cast
<
typename
ClassTimerImpl
<
TClass
>::
TDuration
>
(
ClassTimerImpl
<
TClass
>::
TClock
::
now
()
-
this
->
start_
);
return
tmp
;
return
tmp
;
}
}
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
inline
typename
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
TDuration
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
getTime
()
const
{
return
timeDiff_
;
}
// Specialisation 1
// Specialisation 1
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
:
obj_
(
obj
)
{}
:
ClassTimerImpl
<
TClass
>
(
obj
)
{}
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
void
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
call
(
TArgs
...
args
)
{
void
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
call
(
TArgs
...
args
)
{
start_
=
TClock
::
now
();
this
->
start_
=
ClassTimerImpl
<
TClass
>::
TClock
::
now
();
(
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
(
this
->
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
timeDiff_
=
std
::
chrono
::
duration_cast
<
TDuration
>
(
TClock
::
now
()
-
start_
);
this
->
timeDiff_
=
std
::
chrono
::
duration_cast
<
typename
ClassTimerImpl
<
TClass
>::
TDuration
>
(
ClassTimerImpl
<
TClass
>::
TClock
::
now
()
-
this
->
start_
);
return
;
return
;
}
}
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
inline
typename
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
TDuration
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>::
getTime
()
const
{
return
timeDiff_
;
}
/// Specialisation 2
/// Specialisation 2
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
:
obj_
(
obj
)
{}
:
ClassTimerImpl
<
TClass
>
(
obj
)
{}
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
TRet
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
call
(
TArgs
...
args
)
{
TRet
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
call
(
TArgs
...
args
)
{
start_
=
TClock
::
now
();
this
->
start_
=
ClassTimerImpl
<
TClass
>::
TClock
::
now
();
auto
tmp
=
(
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
auto
tmp
=
(
this
->
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
timeDiff_
=
std
::
chrono
::
duration_cast
<
TDuration
>
(
TClock
::
now
()
-
start_
);
this
->
timeDiff_
=
std
::
chrono
::
duration_cast
<
typename
ClassTimerImpl
<
TClass
>::
TDuration
>
(
ClassTimerImpl
<
TClass
>::
TClock
::
now
()
-
this
->
start_
);
return
tmp
;
return
tmp
;
}
}
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
inline
typename
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
TDuration
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
getTime
()
const
{
return
timeDiff_
;
}
/// Specialisation 3
/// Specialisation 3
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
ClassTimer
(
TClass
&
obj
)
:
obj_
(
obj
)
{}
:
ClassTimerImpl
<
TClass
>
(
obj
)
{}
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
void
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
call
(
TArgs
...
args
)
{
void
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
call
(
TArgs
...
args
)
{
start_
=
TClock
::
now
();
this
->
start_
=
ClassTimerImpl
<
TClass
>::
TClock
::
now
();
(
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
(
this
->
obj_
.
*
TFuncPtr
)(
std
::
forward
<
TArgs
>
(
args
)...);
timeDiff_
=
std
::
chrono
::
duration_cast
<
TDuration
>
(
TClock
::
now
()
-
start_
);
this
->
timeDiff_
=
std
::
chrono
::
duration_cast
<
typename
ClassTimerImpl
<
TClass
>::
TDuration
>
(
ClassTimerImpl
<
TClass
>::
TClock
::
now
()
-
this
->
start_
);
return
;
return
;
}
}
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
inline
typename
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
TDuration
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>::
getTime
()
const
{
return
timeDiff_
;
}
}
// namespace corsika
}
// namespace corsika
\ No newline at end of file
This diff is collapsed.
Click to expand it.
corsika/framework/analytics/ClassTimer.hpp
+
13
−
13
View file @
fd59a064
...
@@ -36,6 +36,13 @@ namespace corsika {
...
@@ -36,6 +36,13 @@ namespace corsika {
/// Measured runtime of the function
/// Measured runtime of the function
TDuration
timeDiff_
;
TDuration
timeDiff_
;
public:
ClassTimerImpl
(
TClass
&
obj
)
:
obj_
(
obj
){};
/// returns the last runtime of the wraped function accessed via call
inline
TDuration
getTime
()
const
{
return
timeDiff_
;}
};
};
/// Measure the runtime of a single class function
/// Measure the runtime of a single class function
...
@@ -61,7 +68,7 @@ namespace corsika {
...
@@ -61,7 +68,7 @@ namespace corsika {
*/
*/
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
class
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>
:
ClassTimerImpl
<
TClass
>
{
class
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>
:
public
ClassTimerImpl
<
TClass
>
{
private:
private:
public:
public:
ClassTimer
(
TClass
&
obj
);
ClassTimer
(
TClass
&
obj
);
...
@@ -75,14 +82,11 @@ namespace corsika {
...
@@ -75,14 +82,11 @@ namespace corsika {
* during the process and therefore must be copy constructible!
* during the process and therefore must be copy constructible!
*/
*/
TRet
call
(
TArgs
...
args
);
TRet
call
(
TArgs
...
args
);
/// returns the last runtime of the wraped function accessed via call
inline
TDuration
getTime
()
const
;
};
};
/// Specialisation for member functions without return value
/// Specialisation for member functions without return value
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)>
class
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>
:
ClassTimerImpl
<
TClass
>
{
class
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...),
TFuncPtr
>
:
public
ClassTimerImpl
<
TClass
>
{
private:
private:
using
TClock
=
std
::
chrono
::
high_resolution_clock
;
using
TClock
=
std
::
chrono
::
high_resolution_clock
;
using
TDuration
=
std
::
chrono
::
microseconds
;
using
TDuration
=
std
::
chrono
::
microseconds
;
...
@@ -91,31 +95,27 @@ namespace corsika {
...
@@ -91,31 +95,27 @@ namespace corsika {
ClassTimer
(
TClass
&
obj
);
ClassTimer
(
TClass
&
obj
);
void
call
(
TArgs
...
args
);
void
call
(
TArgs
...
args
);
inline
TDuration
getTime
()
const
;
};
};
/// Specialisation for const member functions
/// Specialisation for const member functions
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
template
<
typename
TClass
,
typename
TRet
,
typename
...
TArgs
,
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
TRet
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
class
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>
:
ClassTimerImpl
<
TClass
>
{
class
ClassTimer
<
TRet
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>
:
public
ClassTimerImpl
<
TClass
>
{
public:
public:
ClassTimer
(
TClass
&
obj
);
ClassTimer
(
TClass
&
obj
);
TRet
call
(
TArgs
...
args
);
TRet
call
(
TArgs
...
args
);
inline
TDuration
getTime
()
const
;
};
};
/// Specialisation for const member functions without return value
/// Specialisation for const member functions without return value
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
template
<
typename
TClass
,
typename
...
TArgs
,
void
(
TClass
::*
TFuncPtr
)(
TArgs
...)
const
>
class
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>
:
ClassTimerImpl
<
TClass
>
{
class
ClassTimer
<
void
(
TClass
::*
)(
TArgs
...)
const
,
TFuncPtr
>
:
public
ClassTimerImpl
<
TClass
>
{
public:
public:
ClassTimer
(
TClass
&
obj
);
ClassTimer
(
TClass
&
obj
);
void
call
(
TArgs
...
args
);
void
call
(
TArgs
...
args
);
inline
TDuration
getTime
()
const
;
};
};
}
// namespace corsika
}
// namespace corsika
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment