<table><tr><td style="">bruns added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D15426">View Revision</a></tr></table><br /><div><div><p>For the trivial case, do the clear in <tt style="background: #ebebeb; font-size: 13px;">readData()</tt>.</p>

<p>For the non-trivial case:</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">in <tt style="background: #ebebeb; font-size: 13px;">readData()</tt>, no memmoves were ever done. Currently, if you have e.g. 50 kB in m_data, you read 2 * 16 kB, and move the remaining 18 kB to the front. You can instead just read 3 * 16 + 2 kB.</li>
<li class="remarkup-list-item">in <tt style="background: #ebebeb; font-size: 13px;">slotData()</tt>, you have to do a copy every time <tt style="background: #ebebeb; font-size: 13px;">capacity()</tt> is exceeded. You can piggy-pack on this necessary copy/move, and either do a move if <tt style="background: #ebebeb; font-size: 13px;">m_offset >= data.size()</tt> else do a copy of the old data, last append the new <tt style="background: #ebebeb; font-size: 13px;">data</tt>.</li>
</ol></div></div><br /><div><strong>REPOSITORY</strong><div><div>R241 KIO</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D15426">https://phabricator.kde.org/D15426</a></div></div><br /><div><strong>To: </strong>fvogt, Frameworks, elvisangelaccio<br /><strong>Cc: </strong>bruns, kde-frameworks-devel, michaelh, ngraham<br /></div>