Commit 5695cd2207664aebc5e3431e122419399a467bc9
Committed by
Jordan Cheney
1 parent
b510d010
Decided on the TimeVaryingTransform implementation
Showing
1 changed file
with
23 additions
and
26 deletions
openbr/plugins/time.cpp
| @@ -3,66 +3,63 @@ | @@ -3,66 +3,63 @@ | ||
| 3 | namespace br | 3 | namespace br |
| 4 | { | 4 | { |
| 5 | 5 | ||
| 6 | -class StopWatchTransform : public UntrainableTransform | 6 | +/*! |
| 7 | + * \ingroup transforms | ||
| 8 | + * \brief Gives time elapsed over a specified transform as a function of both images (or frames) and pixels. | ||
| 9 | + * \author Jordan Cheney \cite JordanCheney | ||
| 10 | + */ | ||
| 11 | +class StopWatchTransform : public TimeVaryingTransform | ||
| 7 | { | 12 | { |
| 8 | Q_OBJECT | 13 | Q_OBJECT |
| 9 | 14 | ||
| 10 | Q_PROPERTY(br::Transform* child READ get_child WRITE set_child RESET reset_child) | 15 | Q_PROPERTY(br::Transform* child READ get_child WRITE set_child RESET reset_child) |
| 11 | BR_PROPERTY(br::Transform*, child, NULL) | 16 | BR_PROPERTY(br::Transform*, child, NULL) |
| 12 | 17 | ||
| 13 | - mutable QMutex watchLock; | ||
| 14 | mutable long timeElapsed; | 18 | mutable long timeElapsed; |
| 15 | mutable long numImgs; | 19 | mutable long numImgs; |
| 16 | mutable long numPixels; | 20 | mutable long numPixels; |
| 17 | 21 | ||
| 18 | - ~StopWatchTransform() { | ||
| 19 | - printf("Profiled %lu images:\n" | ||
| 20 | - "\tavg time per image: %f ms\n" | ||
| 21 | - "\tavg time per pixel: %f ms\n", | ||
| 22 | - numImgs, (double) timeElapsed / numImgs, (double) timeElapsed / numPixels); | 22 | +public: |
| 23 | + StopWatchTransform() : TimeVaryingTransform(false, false) | ||
| 24 | + { | ||
| 25 | + timeElapsed = 0; | ||
| 26 | + numImgs = 0; | ||
| 27 | + numPixels = 0; | ||
| 23 | } | 28 | } |
| 24 | 29 | ||
| 25 | - void project(const Template &src, Template &dst) const | 30 | +private: |
| 31 | + void projectUpdate(const Template &src, Template &dst) | ||
| 26 | { | 32 | { |
| 27 | QTime watch; | 33 | QTime watch; |
| 28 | 34 | ||
| 29 | if (child == NULL) | 35 | if (child == NULL) |
| 30 | qFatal("Can't find child transform! Command line syntax is StopWatch(name of transform to profile)"); | 36 | qFatal("Can't find child transform! Command line syntax is StopWatch(name of transform to profile)"); |
| 31 | 37 | ||
| 32 | - watchLock.lock(); | ||
| 33 | watch.start(); | 38 | watch.start(); |
| 34 | 39 | ||
| 35 | child->project(src, dst); | 40 | child->project(src, dst); |
| 36 | 41 | ||
| 37 | int time = watch.elapsed(); | 42 | int time = watch.elapsed(); |
| 38 | - watchLock.unlock(); | ||
| 39 | 43 | ||
| 40 | timeElapsed += time; | 44 | timeElapsed += time; |
| 41 | numImgs++; | 45 | numImgs++; |
| 42 | numPixels += (src.m().rows * src.m().cols); | 46 | numPixels += (src.m().rows * src.m().cols); |
| 43 | } | 47 | } |
| 44 | 48 | ||
| 45 | - void project(const TemplateList &src, TemplateList &dst) const | 49 | + void finalize(TemplateList &output) |
| 46 | { | 50 | { |
| 47 | - QTime watch; | ||
| 48 | - foreach (const Template &t, src) { | ||
| 49 | - watchLock.lock(); | ||
| 50 | - watch.start(); | ||
| 51 | - | ||
| 52 | - Template u; | ||
| 53 | - child->project(t, u); | 51 | + (void)output; |
| 54 | 52 | ||
| 55 | - int time = watch.elapsed(); | ||
| 56 | - watchLock.unlock(); | 53 | + printf("\n\nProfiled %lu images:\n" |
| 54 | + "\tavg time per image: %f ms\n" | ||
| 55 | + "\tavg time per pixel: %f ms\n",numImgs, (double)timeElapsed / numImgs, (double)timeElapsed / numPixels); | ||
| 57 | 56 | ||
| 58 | - timeElapsed += time; | ||
| 59 | - numImgs++; | ||
| 60 | - numPixels += (t.m().rows * t.m().cols); | ||
| 61 | - | ||
| 62 | - dst << u; | ||
| 63 | - } | 57 | + timeElapsed = 0; |
| 58 | + numImgs = 0; | ||
| 59 | + numPixels = 0; | ||
| 64 | } | 60 | } |
| 65 | }; | 61 | }; |
| 62 | + | ||
| 66 | BR_REGISTER(Transform, StopWatchTransform) | 63 | BR_REGISTER(Transform, StopWatchTransform) |
| 67 | 64 | ||
| 68 | } //namespace br | 65 | } //namespace br |