Why is valarray so slow on VS2015?why is valarray so slow?Why can templates only be implemented in the header...
How likely are Coriolis-effect-based quirks to develop in starship crew members?
Program for finding longest run of zeros from a list of 100 random integers which are either 0 or 1
Publishing an article in a journal without a related degree
Examples where existence is harder than evaluation
TeX Gyre Pagella Math Integral sign much too small
Gift for mentor after his thesis defense?
Lorentz invariance of Maxwell's equations in matter
Can the president of the United States be guilty of insider trading?
What dice to use in a game that revolves around triangles?
What's an appropriate age to involve kids in life changing decisions?
"Estrontium" on poster
A Latin text with dependency tree
What's the "magic similar to the Knock spell" referenced in the Dungeon of the Mad Mage adventure?
Output the date in the Mel calendar
Thawing Glaciers return to hand interaction
Rusty Chain and back cassette – Replace or Repair?
Row vectors and column vectors (Mathematica vs Matlab)
Is it a good idea to copy a trader when investing?
Renting a house to a graduate student in my department
What can cause an unfrozen indoor copper drain pipe to crack?
Why is it wrong to *implement* myself a known, published, widely believed to be secure crypto algorithm?
Which spells are in some way related to shadows or the Shadowfell?
Double underlining a result in a system of equations with calculation steps on the right side
How to avoid making self and former employee look bad when reporting on fixing former employee's work?
Why is 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 the g++ compiler. 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;
are 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 is 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 the g++ compiler. 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;
are 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 is 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
5 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
5 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
4 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 the g++ compiler. 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;
are 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 is 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 the g++ compiler. 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;
are 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 is 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 18 mins ago
Boann
37.8k1291123
37.8k1291123
New contributor
asked 5 hours ago
dilbertdilbert
435
435
New contributor
New contributor
Did you compile with optimizations on VS2015?
– J. Antonio Perez
5 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
5 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
4 hours ago
add a comment |
Did you compile with optimizations on VS2015?
– J. Antonio Perez
5 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
5 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
4 hours ago
Did you compile with optimizations on VS2015?
– J. Antonio Perez
5 hours ago
Did you compile with optimizations on VS2015?
– J. Antonio Perez
5 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
5 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
5 hours ago
1
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
4 hours ago
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
4 hours ago
add a comment |
1 Answer
1
active
oldest
votes
Am I doing everything right?
You're doing everything right. The problem is in the Visual Studio std::valarray
implementation.
Why is
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 really is no optimization. I do not know why, but it is a fact. It looks like in VS, std::valarray
was 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. The real computation is performed in the assignment operator and more specifically in the __valarray_copy function. Thus, until you perform assignment, all actions are performed on the proxy object _Expr
. Only once operator=
is called, is the operation stored in _Expr
performed in a single loop. This is the reason why you get such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation on the internet or you can write your own. You can use the 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
4 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
4 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-is-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're doing everything right. The problem is in the Visual Studio std::valarray
implementation.
Why is
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 really is no optimization. I do not know why, but it is a fact. It looks like in VS, std::valarray
was 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. The real computation is performed in the assignment operator and more specifically in the __valarray_copy function. Thus, until you perform assignment, all actions are performed on the proxy object _Expr
. Only once operator=
is called, is the operation stored in _Expr
performed in a single loop. This is the reason why you get such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation on the internet or you can write your own. You can use the 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
4 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
4 hours ago
add a comment |
Am I doing everything right?
You're doing everything right. The problem is in the Visual Studio std::valarray
implementation.
Why is
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 really is no optimization. I do not know why, but it is a fact. It looks like in VS, std::valarray
was 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. The real computation is performed in the assignment operator and more specifically in the __valarray_copy function. Thus, until you perform assignment, all actions are performed on the proxy object _Expr
. Only once operator=
is called, is the operation stored in _Expr
performed in a single loop. This is the reason why you get such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation on the internet or you can write your own. You can use the 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
4 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
4 hours ago
add a comment |
Am I doing everything right?
You're doing everything right. The problem is in the Visual Studio std::valarray
implementation.
Why is
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 really is no optimization. I do not know why, but it is a fact. It looks like in VS, std::valarray
was 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. The real computation is performed in the assignment operator and more specifically in the __valarray_copy function. Thus, until you perform assignment, all actions are performed on the proxy object _Expr
. Only once operator=
is called, is the operation stored in _Expr
performed in a single loop. This is the reason why you get such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation on the internet or you can write your own. You can use the GNU implementation as an example.
Am I doing everything right?
You're doing everything right. The problem is in the Visual Studio std::valarray
implementation.
Why is
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 really is no optimization. I do not know why, but it is a fact. It looks like in VS, std::valarray
was 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. The real computation is performed in the assignment operator and more specifically in the __valarray_copy function. Thus, until you perform assignment, all actions are performed on the proxy object _Expr
. Only once operator=
is called, is the operation stored in _Expr
performed in a single loop. This is the reason why you get such good results with g++.
How can I solve the problem?
You need to find a suitable std::valarray
implementation on the internet or you can write your own. You can use the GNU implementation as an example.
edited 15 mins ago
Boann
37.8k1291123
37.8k1291123
answered 5 hours ago
Dmytro DadykaDmytro Dadyka
1,4942722
1,4942722
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
4 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
4 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
4 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
4 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
4 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
4 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
4 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
4 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-is-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
5 hours ago
I used Release platform on VS and -O2 optimisation for g++
– dilbert
5 hours ago
1
Look at this answer. stackoverflow.com/a/6851413/11472661 .
– Dmytro Dadyka
4 hours ago