[llvm-commits] [llvm] r77397 - in /llvm/trunk: include/llvm/Support/FormattedStream.h lib/Support/FormattedStream.cpp
Evan Cheng
evan.cheng at apple.com
Tue Jul 28 21:32:33 PDT 2009
Have we recovered the previous lost compile time?
Evan
On Jul 28, 2009, at 8:04 PM, Daniel Dunbar wrote:
> Hi David,
>
> On Tue, Jul 28, 2009 at 4:26 PM, David Greene<greened at obbligato.org>
> wrote:
>> Author: greened
>> Date: Tue Jul 28 18:26:34 2009
>> New Revision: 77397
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=77397&view=rev
>> Log:
>>
>> Improve performance of PadToColumn by eliminating flushes.
>
> Did you time this? I had to revert this patch, it was causing
> significant regressions on nightlytest, and in my local timings (llc
> -fast-isel -regalloc=local on instcombine.bc) it was almost twice as
> slow!
>
> ddunbar at giles:regr-2009-07-28_19-23$ for r in llc.r7739*; do echo "--
> $r --"; runN 10 ./$r -fast-isel -regalloc=local instcombine.bc -f -o
> /dev/null; done
> -- llc.r77396 --
> name avg min med max SD total
> user 1.7877 1.6809 1.7959 1.9022 0.0668 17.8772
> sys 0.2849 0.2735 0.2865 0.3035 0.0107 2.8489
> wall 2.0794 1.9574 2.0865 2.2134 0.0775 20.7939
> -- llc.r77397 --
> name avg min med max SD total
> user 3.3274 3.1411 3.3089 3.5753 0.1541 33.2742
> sys 0.0586 0.0596 0.0581 0.0617 0.0037 0.5862
> wall 3.3922 3.2062 3.3750 3.6403 0.1550 33.9220
>
> (runN is a timing tool of mine, like 'time' with more goodies)
>
> - Daniel
>
>> Modified:
>> llvm/trunk/include/llvm/Support/FormattedStream.h
>> llvm/trunk/lib/Support/FormattedStream.cpp
>>
>> Modified: llvm/trunk/include/llvm/Support/FormattedStream.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/FormattedStream.h?rev=77397&r1=77396&r2=77397&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/include/llvm/Support/FormattedStream.h (original)
>> +++ llvm/trunk/include/llvm/Support/FormattedStream.h Tue Jul 28
>> 18:26:34 2009
>> @@ -49,13 +49,13 @@
>> ///
>> bool DeleteStream;
>>
>> - /// Column - The current output column of the stream. The
>> column
>> - /// scheme is zero-based.
>> + /// ColumnFlushed - The current output column of the data that's
>> + /// been flushed. The column scheme is zero-based.
>> ///
>> - unsigned Column;
>> + unsigned ColumnFlushed;
>>
>> virtual void write_impl(const char *Ptr, size_t Size) {
>> - ComputeColumn(Ptr, Size);
>> + ComputeColumn(ColumnFlushed);
>> TheStream->write(Ptr, Size);
>> }
>>
>> @@ -67,10 +67,10 @@
>> return TheStream->tell() - TheStream->GetNumBytesInBuffer();
>> }
>>
>> - /// ComputeColumn - Examine the current output and figure out
>> - /// which column we end up in after output.
>> + /// ComputeColumn - Examine the current buffer and figure out
>> + /// which column we're in.
>> ///
>> - void ComputeColumn(const char *Ptr, size_t Size);
>> + void ComputeColumn(unsigned &Column);
>>
>> public:
>> /// formatted_raw_ostream - Open the specified file for
>> @@ -84,11 +84,11 @@
>> /// underneath it.
>> ///
>> formatted_raw_ostream(raw_ostream &Stream, bool Delete = false)
>> - : raw_ostream(), TheStream(0), DeleteStream(false), Column
>> (0) {
>> + : raw_ostream(), TheStream(0), DeleteStream(false),
>> ColumnFlushed(0) {
>> setStream(Stream, Delete);
>> }
>> explicit formatted_raw_ostream()
>> - : raw_ostream(), TheStream(0), DeleteStream(false), Column
>> (0) {}
>> + : raw_ostream(), TheStream(0), DeleteStream(false),
>> ColumnFlushed(0) {}
>>
>> ~formatted_raw_ostream() {
>> if (DeleteStream)
>>
>> Modified: llvm/trunk/lib/Support/FormattedStream.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/FormattedStream.cpp?rev=77397&r1=77396&r2=77397&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/Support/FormattedStream.cpp (original)
>> +++ llvm/trunk/lib/Support/FormattedStream.cpp Tue Jul 28 18:26:34
>> 2009
>> @@ -19,11 +19,11 @@
>> /// ComputeColumn - Examine the current output and figure out which
>> /// column we end up in after output.
>> ///
>> -void formatted_raw_ostream::ComputeColumn(const char *Ptr, size_t
>> Size) {
>> +void formatted_raw_ostream::ComputeColumn(unsigned &Column) {
>> // Keep track of the current column by scanning the string for
>> // special characters
>>
>> - for (const char *epos = Ptr + Size; Ptr != epos; ++Ptr) {
>> + for (const char *Ptr = begin(); Ptr != end(); ++Ptr) {
>> ++Column;
>> if (*Ptr == '\n' || *Ptr == '\r')
>> Column = 0;
>> @@ -38,8 +38,13 @@
>> /// \param MinPad - The minimum space to give after the most recent
>> /// I/O, even if the current column + minpad > newcol.
>> ///
>> -void formatted_raw_ostream::PadToColumn(unsigned NewCol, unsigned
>> MinPad) {
>> - flush();
>> +void formatted_raw_ostream::PadToColumn(unsigned NewCol, unsigned
>> MinPad) {
>> + // Start out from the last flush position.
>> + unsigned Column = ColumnFlushed;
>> +
>> + // Now figure out what's in the buffer and add it to the column
>> + // count.
>> + ComputeColumn(Column);
>>
>> // Output spaces until we reach the desired column.
>> unsigned num = NewCol - Column;
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list