[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