<div dir="rtl"><div dir="ltr">Hi Vadim,</div><div dir="ltr"><br></div><div dir="ltr">Yes, exactly, what is the point of having two versions -pthreads and -win32threads when you can make -pthreads behave like -win32threads by disabling the use of pthreads etc?</div><div dir="ltr"><br></div><div dir="ltr">Yaron</div><div dir="ltr"><br></div></div><div class="gmail_extra"><div dir="ltr"><br><div class="gmail_quote">2014-09-26 22:47 GMT+03:00 Vadim Chugunov <span dir="ltr"><<a href="mailto:vadimcn@gmail.com" target="_blank">vadimcn@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 .8ex;border-left:1px #ccc solid;border-right:1px #ccc solid;padding-left:1ex;padding-right:1ex"><div><div>When LLVM's configure finds a usable <pthread.h>, it prefers to use that rather than the home-grown stuff.   However if LLVM is configured with --disable-pthreads, both mingw flavors produce the same results.<br><br></div>BTW, I've tried to quantify the slowdown: a quick test indicates that LLVM build that uses pthreads is about 10% slower than the one which doesn't.  This is less that I remember seeing last year (something got optimized?), but still...<span class="HOEnZb"><font color="#888888"><br><br></font></span></div><span class="HOEnZb"><font color="#888888">Vadim</font></span><div><div class="h5"><br><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 3:29 AM, Yaron Keren <span dir="ltr"><<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="rtl"><div dir="ltr">Yes, of course.</div><div dir="ltr"><br></div><div dir="ltr">I refer to the <span style="font-family:arial,sans-serif;font-size:12.7273px"> significant slowdown of Rust compiler when compiled with -pthreads vs -win32threads flavor.</span></div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.7273px">If Rust can be compiled without <mutex> and <thread> on win32threads, why should it slow down on pthreads? </span></div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.7273px">Isn't the only difference betwen the win32threads and pthreads is the addition of pthreads, <mutex> and <thread>?</span><span><font color="#888888"><br></font></span></div><span><font color="#888888"><div dir="ltr"><br></div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.7273px">Yaron</span></div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.7273px"><br></span></div></font></span></div><div><div><div class="gmail_extra"><div dir="ltr"><br><div class="gmail_quote">2014-09-26 11:39 GMT+03:00 Vadim Chugunov <span dir="ltr"><<a href="mailto:vadimcn@gmail.com" target="_blank">vadimcn@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0.8ex;border-left:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204);padding-left:1ex;padding-right:1ex"><div>Hi Yaron,<br></div>Not sure I understand your question.  Wasn't <mutex> one of the more important C++11 features that LLVM would like to use?<br></blockquote></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 1:24 AM, Yaron Keren <span dir="ltr"><<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="rtl"><div dir="ltr">Vadim, </div><div dir="ltr"><br></div><div dir="ltr">Thanks for the feedback on the -win32. A dependency on a small DLL with BSD license does not sound too bad, but performance regression is obviously a serious problem.<br></div><div dir="ltr"><br></div><div dir="ltr">However, by disabling <mutex> use with -pthreads rust performance should be same as -win32 threads?</div><div dir="ltr">Saying it another way, does the -win32 version have any feature that -pthreads vesion do not have?</div><span><font color="#888888"><div dir="ltr"><br></div><div dir="ltr">Yaron</div><div dir="ltr"><br></div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote"><div dir="ltr">2014-09-25 9:52 GMT+03:00 Vadim Chugunov <span dir="ltr"><<a href="mailto:vadimcn@gmail.com" target="_blank">vadimcn@gmail.com</a>></span>:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>Hi,<br>I think I can at least answer why the Rust project prefers to use mingw-w64-win32threads:<br></div>1. It does not inject dependency on libwinpthread.dll, which is nice.<br></div>2. Those who tried building LLVM with mingw-w64-pthreads, had reported significant slowdown of the resulting Rust compiler (as compared to one linked to LLVM compiled with the win32threads flavor).   Profiling seemed to point towards libpthreads' implementation of mutex.  I had checked the source, and indeed, it looked not very efficient (<a href="http://sourceforge.net/p/mingw-w64/bugs/344" target="_blank">http://sourceforge.net/p/mingw-w64/bugs/344</a>).  It would be nice to get a second opinion, though, maybe I missed something.<span><font color="#888888"><br><br>Vadim<br></font></span></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Wed, Sep 24, 2014 at 10:55 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 24, 2014 at 10:37 AM, Óscar Fuentes <span dir="ltr"><<a href="mailto:ofv@wanadoo.es" target="_blank">ofv@wanadoo.es</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow:hidden">The best thing for understanding their reasons is to ask them to speak<br>
up.</div></blockquote><div><br></div><div>I asked them directly, and this thread is a chance for them to speak up again. I *think* I've addressed the concerns of those I've spoken to directly, but there may be other folks or other concerns or I may have messed it up. =]</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow:hidden"> My experience on the MinGW/MinGW-w64 communities is that those who<br>
choose MinGW is because of ignorance about MinGW-w64 and because there<br>
are lots of documents on the 'net that references MinGW. MinGW is, to<br>
all practical effects, a zombie project and there is no reason to prefer<br>
it over MinGW-w64 nowadays.</div></blockquote></div><br>:: shrug ::</div><div class="gmail_extra"><br></div><div class="gmail_extra">I'm not such a user, and so I don't want to speculate as to what motivates them.</div></div>
<br></div></div><span>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></span></blockquote></div><br></div></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></div></div>
</div></div></blockquote></div><br></div></div></div></div></div></blockquote></div></div></div>