<div dir="ltr">Hi Will,<div>Right, I'm not an expert on low level things, but yes, each memory page can cache a different vector and even can work faster. Specially if the algoritm uses a few fields of a large structure. I was wrong on that.</div><div><br></div><div>But anyway, Unboxed  need more native support to give Haskell more credibility in performance critical problems.  Now it has some conversion overhead  for user defined data.  That may be optimized away but the whole thing is second class, via an instance instead of a language feature.</div><div><br></div><div>Maybe  automatic deriving Unboxed instances can be the right compromise</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-14 18:53 GMT+01:00 Will Yager <span dir="ltr"><<a href="mailto:will.yager@gmail.com" target="_blank">will.yager@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div></div><div>This is why CPUs have many independent cache lines. Unpacking a vector into multiple vectors is usually fine for performance. I have seen it actually increase performance, because it simplifies addressing. </div><div><br></div><div>-Will</div><span class=""><div><br>On Nov 14, 2015, at 05:30, Alberto G. Corona <<a href="mailto:agocorona@gmail.com" target="_blank">agocorona@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><div><br></div><div><font color="#000000" face="sans-serif"><span style="line-height:18.2px">This is nice in some cases, but does most of the time does not. this does not solve the problem of CPU cache since the fields in the data are at least lenght (Vector)  away. I mean that if the vector is moderately long, if the first field is in the cache, the second or third etc may not be. Usually the fields of any data are handled together.  </span></font></div><div><br></div></div></blockquote></span></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Alberto.</div>
</div>