aboutsummaryrefslogtreecommitdiff
path: root/tests/performance_tests/performance_utils.h
diff options
context:
space:
mode:
authorAntonio Juarez <antonio.maria.juarez@live.com>2014-03-03 22:07:58 +0000
committerAntonio Juarez <antonio.maria.juarez@live.com>2014-03-03 22:07:58 +0000
commit296ae46ed8f8f6e5f986f978febad302e3df231a (patch)
tree1629164454a239308f33c9e12afb22e7f3cd8eeb /tests/performance_tests/performance_utils.h
parentchanged name (diff)
downloadmonero-296ae46ed8f8f6e5f986f978febad302e3df231a.tar.xz
moved all stuff to github
Diffstat (limited to 'tests/performance_tests/performance_utils.h')
-rw-r--r--tests/performance_tests/performance_utils.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/performance_tests/performance_utils.h b/tests/performance_tests/performance_utils.h
new file mode 100644
index 000000000..b2ac4076f
--- /dev/null
+++ b/tests/performance_tests/performance_utils.h
@@ -0,0 +1,55 @@
+// Copyright (c) 2012-2013 The Cryptonote developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#pragma once
+
+#include <iostream>
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_WINDOWS
+#include <windows.h>
+#endif
+
+void set_process_affinity(int core)
+{
+#if defined(BOOST_WINDOWS)
+ DWORD_PTR mask = 1;
+ for (int i = 0; i < core; ++i)
+ {
+ mask <<= 1;
+ }
+ ::SetProcessAffinityMask(::GetCurrentProcess(), core);
+#elif defined(BOOST_HAS_PTHREADS)
+ cpu_set_t cpuset;
+ CPU_ZERO(&cpuset);
+ CPU_SET(core, &cpuset);
+ if (0 != ::pthread_setaffinity_np(::pthread_self(), sizeof(cpuset), &cpuset))
+ {
+ std::cout << "pthread_setaffinity_np - ERROR" << std::endl;
+ }
+#endif
+}
+
+void set_thread_high_priority()
+{
+#if defined(BOOST_WINDOWS)
+ ::SetPriorityClass(::GetCurrentProcess(), HIGH_PRIORITY_CLASS);
+#elif defined(BOOST_HAS_PTHREADS)
+ pthread_attr_t attr;
+ int policy = 0;
+ int max_prio_for_policy = 0;
+
+ ::pthread_attr_init(&attr);
+ ::pthread_attr_getschedpolicy(&attr, &policy);
+ max_prio_for_policy = ::sched_get_priority_max(policy);
+
+ if (0 != ::pthread_setschedprio(::pthread_self(), max_prio_for_policy))
+ {
+ std::cout << "pthread_setschedprio - ERROR" << std::endl;
+ }
+
+ ::pthread_attr_destroy(&attr);
+#endif
+}