Why valarray so slow on VS2015?why is valarray so slow?Why can templates only be implemented in the header file?Why is “using namespace std” considered bad practice?Improve INSERT-per-second performance of SQLite?Why do we need virtual functions in C++?Why are elementwise additions much faster in separate loops than in a combined loop?Why does changing 0.1f to 0 slow down performance by 10x?Why is reading lines from stdin much slower in C++ than Python?Why is it faster to process a sorted array than an unsorted array?Why is my program slow when looping over exactly 8192 elements?Why should I use a pointer rather than the object itself?
Why did Missandei say this?
TeX Gyre Pagella Math Integral sign much too small
Best species to breed to intelligence
Compactness in normed vector spaces.
Is there an application which does HTTP PUT?
Gain of Non-Inverting Amplifier Does Not vary with Resistor Values
Which spells are in some way related to shadows or the Shadowfell?
What replaces x86 intrinsics for C when Apple ditches Intel CPUs for their own chips?
Publishing an article in a journal without a related degree
Do Rabbis admit emotional involvement in their rulings?
Why is there a cap on 401k contributions?
Passport stamps art, can it be done?
resoldering copper waste pipe
Why does the electron wavefunction not collapse within atoms at room temperature in gas, liquids or solids due to decoherence?
Can I use a 11-23 11-speed shimano cassette with the RD-R8000 11-speed Ultegra Shadow Rear Derailleur (short cage)?
Double underlining a result in a system of equations with calculation steps on the right side
Is it a Munchausen Number?
My perfect evil overlord plan... or is it?
What are these round pads on the bottom of a PCB?
Two (probably) equal real numbers which are not proved to be equal?
Can you turn a recording upside-down?
Renting a house to a graduate student in my department
How to avoid making self and former employee look bad when reporting on fixing former employee's work?
How to handle DM constantly stealing everything from sleeping characters?
Why valarray so slow on VS2015?
why is valarray so slow?Why can templates only be implemented in the header file?Why is “using namespace std” considered bad practice?Improve INSERT-per-second performance of SQLite?Why do we need virtual functions in C++?Why are elementwise additions much faster in separate loops than in a combined loop?Why does changing 0.1f to 0 slow down performance by 10x?Why is reading lines from stdin much slower in C++ than Python?Why is it faster to process a sorted array than an unsorted array?Why is my program slow when looping over exactly 8192 elements?Why should I use a pointer rather than the object itself?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
To speed up the calculations in my library, I decided to use the std::valarray
class. The documentation says:
std::valarray and helper classes are defined to be free of certain
forms of aliasing, thus allowing operations on these classes to be
optimized similar to the effect of the keyword restrict in the C
programming language. In addition, functions and operators that take
valarray arguments are allowed to return proxy objects to make it
possible for the compiler to optimize an expression such as v1 = a * v2
+ v3; as a single loop that executes v1[i] = a * v2[i] + v3[i]; avoiding any temporaries or multiple passes.
This is exactly what I need. And it works as described in the documentation when I use g++ compiller. I have developed a simple example to test the std::valarray
performance:
void check(std::valarray<float>& a)
for (int i = 0; i < a.size(); i++)
if (a[i] != 7)
std::cout << "Error" << std::endl;
int main()
const int N = 100000000;
std::valarray<float> a(1, N);
std::valarray<float> c(2, N);
std::valarray<float> b(3, N);
std::valarray<float> d(N);
auto start = std::chrono::system_clock::now();
d = a + b * c;
auto end = std::chrono::system_clock::now();
std::cout << "Valarr optimized case: "
<< (end - start).count() << std::endl;
check(d);
// Optimal single loop case
start = std::chrono::system_clock::now();
for (int i = 0; i < N; i++)
d[i] = a[i] + b[i] * c[i];
end = std::chrono::system_clock::now();
std::cout << "Optimal case: " << (end - start).count() << std::endl;
check(d);
return 0;
On g++ I got:
Valarr optimized case: 1484215
Optimal case: 1472202
It seems that all operations d = a + b * c;
really placed in one cycle, which simplifies the code while maintaining performance. However, this does not work when I use VS2015. For the same code, I get:
Valarr optimized case: 6652402
Optimal case: 1766699
The difference is almost four times, there is no optimization! Why std::valarray
not working as needed on VS2015? Am I doing everything right? How can I solve the problem without abandoning std::valarray
?
c++ optimization valarray
New contributor
add a comment |
To speed up the calculations in my library, I decided to use the std::valarray
class. The documentation says:
std::valarray and helper classes are defined to be free of certain
forms of aliasing, thus allowing operations on these classes to be
optimized similar to the effect of the keyword restrict in the C
programming language. In addition, functions and operators that take
valarray arguments are allowed to return proxy objects to make it
possible for the compiler to optimize an expression such as v1 = a * v2
+ v3; as a single loop that executes v1[i] = a * v2[i] + v3[i]; avoiding any temporaries or multiple passes.
This is exactly what I need. And it works as described in the documentation when I use g++ compiller. I have developed a simple example to test the std::valarray
performance:
void check(std::valarray<float>& a)
for (int i = 0; i < a.size(); i++)
if (a[i] != 7)
std::cout << "Error" << std::endl;
int main()
const int N = 100000000;
std::valarray<float> a(1, N);
std::valarray<float> c(2, N);
std::valarray<float> b(3, N);
std::valarray<float> d(N);
auto start = std::chrono::system_clock::now();
d = a + b * c;
auto end = std::chrono::system_clock::now();
std::cout << "Valarr optimized case: "
<< (end - start).count() << std::endl;
check(d);
// Optimal single loop case
start = std::chrono::system_clock::now();
for (int i = 0; i < N; i++)
d[i] = a[i] + b[i] * c[i];
end = std::chrono::system_clock::now();
std::cout << "Optimal case: " << (end - start).count() << std::endl;
check(d);
return 0;
On g++ I got:
Valarr optimized case: 1484215
Optimal case: 1472202
It seems that all operations d = a + b * c;
really placed in one cycle, which simplifies the code while maintaining performance. However, this does not work when I use VS2015. For the same code, I get:
Valarr optimized case: 6652402
Optimal case: 1766699
The difference is almost four times, there is no optimization! Why std::valarray
not working as needed on VS2015? Am I doing everything right? How can I solve the problem without abandoning std::valarray
?
c++ optimization valarray
New contributor
Did you compile with optimizations on VS2015?
– J. Antonio Perez
4 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
4 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
3 hours ago
add a comment |
To speed up the calculations in my library, I decided to use the std::valarray
class. The documentation says:
std::valarray and helper classes are defined to be free of certain
forms of aliasing, thus allowing operations on these classes to be
optimized similar to the effect of the keyword restrict in the C
programming language. In addition, functions and operators that take
valarray arguments are allowed to return proxy objects to make it
possible for the compiler to optimize an expression such as v1 = a * v2
+ v3; as a single loop that executes v1[i] = a * v2[i] + v3[i]; avoiding any temporaries or multiple passes.
This is exactly what I need. And it works as described in the documentation when I use g++ compiller. I have developed a simple example to test the std::valarray
performance:
void check(std::valarray<float>& a)
for (int i = 0; i < a.size(); i++)
if (a[i] != 7)
std::cout << "Error" << std::endl;
int main()
const int N = 100000000;
std::valarray<float> a(1, N);
std::valarray<float> c(2, N);
std::valarray<float> b(3, N);
std::valarray<float> d(N);
auto start = std::chrono::system_clock::now();
d = a + b * c;
auto end = std::chrono::system_clock::now();
std::cout << "Valarr optimized case: "
<< (end - start).count() << std::endl;
check(d);
// Optimal single loop case
start = std::chrono::system_clock::now();
for (int i = 0; i < N; i++)
d[i] = a[i] + b[i] * c[i];
end = std::chrono::system_clock::now();
std::cout << "Optimal case: " << (end - start).count() << std::endl;
check(d);
return 0;
On g++ I got:
Valarr optimized case: 1484215
Optimal case: 1472202
It seems that all operations d = a + b * c;
really placed in one cycle, which simplifies the code while maintaining performance. However, this does not work when I use VS2015. For the same code, I get:
Valarr optimized case: 6652402
Optimal case: 1766699
The difference is almost four times, there is no optimization! Why std::valarray
not working as needed on VS2015? Am I doing everything right? How can I solve the problem without abandoning std::valarray
?
c++ optimization valarray
New contributor
To speed up the calculations in my library, I decided to use the std::valarray
class. The documentation says:
std::valarray and helper classes are defined to be free of certain
forms of aliasing, thus allowing operations on these classes to be
optimized similar to the effect of the keyword restrict in the C
programming language. In addition, functions and operators that take
valarray arguments are allowed to return proxy objects to make it
possible for the compiler to optimize an expression such as v1 = a * v2
+ v3; as a single loop that executes v1[i] = a * v2[i] + v3[i]; avoiding any temporaries or multiple passes.
This is exactly what I need. And it works as described in the documentation when I use g++ compiller. I have developed a simple example to test the std::valarray
performance:
void check(std::valarray<float>& a)
for (int i = 0; i < a.size(); i++)
if (a[i] != 7)
std::cout << "Error" << std::endl;
int main()
const int N = 100000000;
std::valarray<float> a(1, N);
std::valarray<float> c(2, N);
std::valarray<float> b(3, N);
std::valarray<float> d(N);
auto start = std::chrono::system_clock::now();
d = a + b * c;
auto end = std::chrono::system_clock::now();
std::cout << "Valarr optimized case: "
<< (end - start).count() << std::endl;
check(d);
// Optimal single loop case
start = std::chrono::system_clock::now();
for (int i = 0; i < N; i++)
d[i] = a[i] + b[i] * c[i];
end = std::chrono::system_clock::now();
std::cout << "Optimal case: " << (end - start).count() << std::endl;
check(d);
return 0;
On g++ I got:
Valarr optimized case: 1484215
Optimal case: 1472202
It seems that all operations d = a + b * c;
really placed in one cycle, which simplifies the code while maintaining performance. However, this does not work when I use VS2015. For the same code, I get:
Valarr optimized case: 6652402
Optimal case: 1766699
The difference is almost four times, there is no optimization! Why std::valarray
not working as needed on VS2015? Am I doing everything right? How can I solve the problem without abandoning std::valarray
?
c++ optimization valarray
c++ optimization valarray
New contributor
New contributor
edited 3 hours ago
dilbert
New contributor
asked 4 hours ago
dilbertdilbert
335
335
New contributor
New contributor
Did you compile with optimizations on VS2015?
– J. Antonio Perez
4 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
4 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
3 hours ago
add a comment |
Did you compile with optimizations on VS2015?
– J. Antonio Perez
4 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
4 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
3 hours ago
Did you compile with optimizations on VS2015?
– J. Antonio Perez
4 hours ago
Did you compile with optimizations on VS2015?
– J. Antonio Perez
4 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
4 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
4 hours ago
1
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
3 hours ago
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
3 hours ago
add a comment |
1 Answer
1
active
oldest
votes
Am I doing everything right?
You do everything right. The problem is in Visual Studio std::valarray
implementation.
Why
std::valarray
not working as needed on VS2015?
Just open the implementation of any valarray
operator, for example operator+
You will see something like (after macro expansion):
template<class _Ty> inline
valarray<_Ty> operator+(const valarray<_Ty>& _Left,
const valarray<_Ty>& _Right)
valarray<TYPE> _Ans(_Left.size());
for (size_t _Idx = 0; _Idx < _Ans.size(); ++_Idx)
_Ans[_Idx] = _Left[_Idx] + _Right[_Idx];
return (_Ans)
As you can see, a new object is created in which the result of the operation is copied. There is really no any optimization. I do not know why, but it is a fact. It looks like in VS the std::valarray
added for compatibility only.
For comparison, consider the GNU implementation. As you can see, each operator returns the template class _Expr which contains only the operation, but does not contain data. Real computation performs in the assignment operator and more specifically in the __valarray_copy function. Thus, until you don't perform assignments, all actions are performed on the proxy object _Expr
. Only while operator=
called, the operation stored in _Expr
performs in the single loop. This is the reason why you got such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation in the internet or you can write your own. You can use GNU implementation as an example.
3
I read an article about howvalarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.
– Mooing Duck
3 hours ago
1
I looked in the GNUvalarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effectivevalarray
.
– Dmytro Dadyka
3 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
dilbert is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f56050322%2fwhy-valarray-so-slow-on-vs2015%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Am I doing everything right?
You do everything right. The problem is in Visual Studio std::valarray
implementation.
Why
std::valarray
not working as needed on VS2015?
Just open the implementation of any valarray
operator, for example operator+
You will see something like (after macro expansion):
template<class _Ty> inline
valarray<_Ty> operator+(const valarray<_Ty>& _Left,
const valarray<_Ty>& _Right)
valarray<TYPE> _Ans(_Left.size());
for (size_t _Idx = 0; _Idx < _Ans.size(); ++_Idx)
_Ans[_Idx] = _Left[_Idx] + _Right[_Idx];
return (_Ans)
As you can see, a new object is created in which the result of the operation is copied. There is really no any optimization. I do not know why, but it is a fact. It looks like in VS the std::valarray
added for compatibility only.
For comparison, consider the GNU implementation. As you can see, each operator returns the template class _Expr which contains only the operation, but does not contain data. Real computation performs in the assignment operator and more specifically in the __valarray_copy function. Thus, until you don't perform assignments, all actions are performed on the proxy object _Expr
. Only while operator=
called, the operation stored in _Expr
performs in the single loop. This is the reason why you got such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation in the internet or you can write your own. You can use GNU implementation as an example.
3
I read an article about howvalarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.
– Mooing Duck
3 hours ago
1
I looked in the GNUvalarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effectivevalarray
.
– Dmytro Dadyka
3 hours ago
add a comment |
Am I doing everything right?
You do everything right. The problem is in Visual Studio std::valarray
implementation.
Why
std::valarray
not working as needed on VS2015?
Just open the implementation of any valarray
operator, for example operator+
You will see something like (after macro expansion):
template<class _Ty> inline
valarray<_Ty> operator+(const valarray<_Ty>& _Left,
const valarray<_Ty>& _Right)
valarray<TYPE> _Ans(_Left.size());
for (size_t _Idx = 0; _Idx < _Ans.size(); ++_Idx)
_Ans[_Idx] = _Left[_Idx] + _Right[_Idx];
return (_Ans)
As you can see, a new object is created in which the result of the operation is copied. There is really no any optimization. I do not know why, but it is a fact. It looks like in VS the std::valarray
added for compatibility only.
For comparison, consider the GNU implementation. As you can see, each operator returns the template class _Expr which contains only the operation, but does not contain data. Real computation performs in the assignment operator and more specifically in the __valarray_copy function. Thus, until you don't perform assignments, all actions are performed on the proxy object _Expr
. Only while operator=
called, the operation stored in _Expr
performs in the single loop. This is the reason why you got such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation in the internet or you can write your own. You can use GNU implementation as an example.
3
I read an article about howvalarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.
– Mooing Duck
3 hours ago
1
I looked in the GNUvalarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effectivevalarray
.
– Dmytro Dadyka
3 hours ago
add a comment |
Am I doing everything right?
You do everything right. The problem is in Visual Studio std::valarray
implementation.
Why
std::valarray
not working as needed on VS2015?
Just open the implementation of any valarray
operator, for example operator+
You will see something like (after macro expansion):
template<class _Ty> inline
valarray<_Ty> operator+(const valarray<_Ty>& _Left,
const valarray<_Ty>& _Right)
valarray<TYPE> _Ans(_Left.size());
for (size_t _Idx = 0; _Idx < _Ans.size(); ++_Idx)
_Ans[_Idx] = _Left[_Idx] + _Right[_Idx];
return (_Ans)
As you can see, a new object is created in which the result of the operation is copied. There is really no any optimization. I do not know why, but it is a fact. It looks like in VS the std::valarray
added for compatibility only.
For comparison, consider the GNU implementation. As you can see, each operator returns the template class _Expr which contains only the operation, but does not contain data. Real computation performs in the assignment operator and more specifically in the __valarray_copy function. Thus, until you don't perform assignments, all actions are performed on the proxy object _Expr
. Only while operator=
called, the operation stored in _Expr
performs in the single loop. This is the reason why you got such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation in the internet or you can write your own. You can use GNU implementation as an example.
Am I doing everything right?
You do everything right. The problem is in Visual Studio std::valarray
implementation.
Why
std::valarray
not working as needed on VS2015?
Just open the implementation of any valarray
operator, for example operator+
You will see something like (after macro expansion):
template<class _Ty> inline
valarray<_Ty> operator+(const valarray<_Ty>& _Left,
const valarray<_Ty>& _Right)
valarray<TYPE> _Ans(_Left.size());
for (size_t _Idx = 0; _Idx < _Ans.size(); ++_Idx)
_Ans[_Idx] = _Left[_Idx] + _Right[_Idx];
return (_Ans)
As you can see, a new object is created in which the result of the operation is copied. There is really no any optimization. I do not know why, but it is a fact. It looks like in VS the std::valarray
added for compatibility only.
For comparison, consider the GNU implementation. As you can see, each operator returns the template class _Expr which contains only the operation, but does not contain data. Real computation performs in the assignment operator and more specifically in the __valarray_copy function. Thus, until you don't perform assignments, all actions are performed on the proxy object _Expr
. Only while operator=
called, the operation stored in _Expr
performs in the single loop. This is the reason why you got such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation in the internet or you can write your own. You can use GNU implementation as an example.
edited 1 hour ago
answered 3 hours ago
Dmytro DadykaDmytro Dadyka
1,4822721
1,4822721
3
I read an article about howvalarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.
– Mooing Duck
3 hours ago
1
I looked in the GNUvalarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effectivevalarray
.
– Dmytro Dadyka
3 hours ago
add a comment |
3
I read an article about howvalarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.
– Mooing Duck
3 hours ago
1
I looked in the GNUvalarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effectivevalarray
.
– Dmytro Dadyka
3 hours ago
3
3
I read an article about how
valarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.– Mooing Duck
3 hours ago
I read an article about how
valarray
never quite had the performance that it was intended to have, in any compiler, so as a result, MSVC never bothered to optimize it, because it was always slow regardless.– Mooing Duck
3 hours ago
1
1
I looked in the GNU
valarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effective valarray
.– Dmytro Dadyka
3 hours ago
I looked in the GNU
valarray
implementation. In this implementation, a template proxy object is returned and real calculations only occur when assigning. Performance is only slightly below the explicit use of cycles. Looks like it’s still possible to get effective valarray
.– Dmytro Dadyka
3 hours ago
add a comment |
dilbert is a new contributor. Be nice, and check out our Code of Conduct.
dilbert is a new contributor. Be nice, and check out our Code of Conduct.
dilbert is a new contributor. Be nice, and check out our Code of Conduct.
dilbert is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f56050322%2fwhy-valarray-so-slow-on-vs2015%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Did you compile with optimizations on VS2015?
– J. Antonio Perez
4 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
4 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
3 hours ago