<div class="gmail_quote">On Sun, Jul 3, 2011 at 6:21 AM, Matthieu Monrocq <span dir="ltr"><<a href="mailto:matthieu.monrocq@gmail.com" target="_blank">matthieu.monrocq@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">

<div><div></div><div><br><br><div class="gmail_quote">2011/7/2 Zach Wheeler <span dir="ltr"><<a href="mailto:zachw.foss@gmail.com" target="_blank">zachw.foss@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">


<div><div></div><div><div class="gmail_quote">On Fri, Jul 1, 2011 at 8:07 PM, Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com" target="_blank">dgregor@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">



<div><br>
On Jul 1, 2011, at 3:45 PM, Argyrios Kyrtzidis wrote:<br>
<br>
> On Jul 1, 2011, at 12:28 PM, Zach Wheeler wrote:<br>
><br>
>> Looking at DiagnosticIDs.cpp again, it seems that he probably didn't store straight StringRefs because they would not pack efficiently for the short strings he was anticipating.<br>
>><br>
>> OK, I'm not following you. The compilation of /which file/ gets slowed down by constructor calls to /what object/, exactly?<br>
><br>
> DiagnosticIDs.cpp contains huge static arrays. Putting a StringRef into the struct there would make the struct non-POD and its constructor would have to be called, and since it is a global array all the constructor calls would occur in the global initializer function.<br>




> That caused a huge slow down when compiling that file but, apart from that, we generally try to avoid the need for global initializer functions as much as possible.<br>
<br>
</div>... especially because global initializer functions affect our startup time.<br>
<br>
        - Doug<br>
<br>
</blockquote></div><br></div></div><div>Thanks for clarifying Argyrios and Doug; I think I understand DiagnosticIDs.cpp better now.</div><div><br></div><div>Perhaps I'm being dense, but still I don't understand why the methods in Option.cpp have to call strlen so many times; it seems like there's a few ways around that. Did I misunderstand something?</div>



<div><br></div><div>ZJ</div>
</blockquote></div><br></div></div>As far as I can tell, they certainly don't have to. The very presence of FIXME seems to indicate that a StringRef-ication would be welcome.<br><font color="#888888"><br>-- Matthieu<br>


</font></blockquote></div><br>I did misunderstand you; I thought you were talking about Option.cpp in your first email. Sorry about that. All clear now. :-)<br><div style="display:inline"></div>