<br><font size=2 face="sans-serif">Jean-Sebastien,</font>
<br>
<br><font size=2 face="sans-serif">The reason ClpMessage was being called
so much was that in OsiClpSolverInterface::resolve a &quot;lightweight&quot;
copy of fixed model is made as it seemed safer as then hints could be used
on this created model. &nbsp;Unhappily this lightweight copy did have message
creation and this can be an overhead on very small models. &nbsp;As far
as I can see it does no harm to use the fixed model. &nbsp;This does improve
times on small models significantly. &nbsp;If anyone does notice any adverse
effects please tell me.</font>
<br>
<br><font size=2 face="sans-serif">For setTestForDuplicateIndex I have
effectively removed it when called from fullset. &nbsp;This is perfectly
safe as there is no way a dense vector can have duplicates! &nbsp;However
I only see a small improvement. &nbsp;Can you tell me if my changes help
more for you?</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Jean-Sebastien Roy &lt;js@jeannot.org&gt;</b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-lpsolver-admin@www-124.southbury.usf.ibm.com</font>
<p><font size=1 face="sans-serif">03/31/2004 12:35 PM</font>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td valign=top><font size=1 face="sans-serif">coin-lpsolver@www-124.southbury.usf.ibm.com</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td valign=top><font size=1 face="sans-serif">[Coin-lpsolver] Sbb: Use
of setTestForDuplicateIndex and CoinMessages</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Hi !<br>
<br>
I did some profiling of Sbb (I know it's not even version 1.0, but it <br>
works quite well already !), and made some observations written below.<br>
<br>
The CoinPackedVectorBase::setTestForDuplicateIndex seems to test wether
<br>
multiple indices share the same value in the sparse vector (am I right
<br>
?). For that, it creates a std::set using CoinPackedVectorBase::indexSet
<br>
and possibly throw an error.<br>
A run of Sbb using a profiler revealed that on the problems I'm solving,
<br>
a very large part of the time is spent in this function (more than 20%.
<br>
It varies between platforms (Sun or Linux)).<br>
<br>
Since, it looks like a debug test, I removed the test (in <br>
CoinPackedVector::setFull), without any apparent ill effect. Is it <br>
reasonnable ? Should it be enabled for debug versions only ?<br>
<br>
The profiler runs revealed that the second most time consuming task was
<br>
ClpMessage::ClpMessage (allong with all *Message functions) which is <br>
building the message table for output. It seems to be called extremely
<br>
often (in ClpModel::ClpModel and ClpModel::newLanguage), and takes very
<br>
long since it requires a lot of strdup, strcpy, malloc and free. Like <br>
the previous line, it's almost 20% of the time spent (even when no <br>
messages are output).<br>
<br>
I thought it could be nice to be able to perform the message table <br>
building only once. Since I do not understand the Clp code yet, I just
<br>
disabled most of the CoinMessage functionnality.<br>
<br>
Regards,<br>
<br>
js<br>
<br>
_______________________________________________<br>
Coin-lpsolver mailing list<br>
Coin-lpsolver@www-124.ibm.com<br>
http://www-124.ibm.com/developerworks/oss/mailman/listinfo/coin-lpsolver<br>
</tt></font>
<br>