[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Making the present code run faster
I want to strongly reinforce Chris's remarks. Rewriting
FITS software is one of the greatest time-sinks ever
created and one of the largest sources of erstwhile
FITS-file incompatibilities. There are many other things
to spend time on - this shouldn't be one of them.
Cheers,
Doug
On Wed, 31 Jan 2001, Albertson, Chris wrote:
>
>
> Don't try to do FITS format file on your own. There's no
> point. Except as an excercise if you have time to kill. The
> CFITSIO library is the only way to go. It handles
> the blocking for you. The feature list is longer then your
> arm and it runs on just about any kind of computer. There is
> no way you could duplicate CFITSIO in only a few months.
> The library is in such common use that you could even say
> the it _defines_ the FITS file format.
>
> CFITSIO goes on step farther the what you did. It maintains a
> block cache in RAM. It writes out the bloks using random I/O
> as required. If you have enough RAM nothing really is commited
> to disk until the file is closed. The cache algorithum was
> been tweeked and re-tweeked for years now an is about as good
> as it is going to get. As I said befor, I can write FITS
> at the hardware "media speed" using only a P200.
>
>
> > -----Original Message-----
> > From: Andrew Bennett [mailto:andrew.bennett@ns.sympatico.ca]
> > Sent: Tuesday, January 30, 2001 12:48 PM
> > To: Tom Droege; tass@listserv.wwa.com
> > Subject: Re: Making the present code run faster
> >
> >
> > On Mon, 29 Jan 2001 13:34:04 -0600, Tom Droege
> > <tdroege@veriomail.com> or somebody wrote:
> >
> > > Then it is not a question of CPU speed, but rather disk
> > >speed or some interaction between the BASIC code and disk
> > >writing.
> >
> > The biggest single factor in speeding up my Pascal
> > code was to quit trying to write in 2880 Byte chunks
> > (for FITS) and instead to block the data up in 2^n
> > segments. The odd sizes really screwed up the system
> > with or without SMARTDRV. With SMARTDRV, one could
> > use relatively short 2^n blocks without penalty. I used
> > 16384 Bytes.
> >
> > I know nothing about Windows caching - I suspect it
> > will also be badly affected by non-2^n blocks.
> >
> > My Pascal code looked like this:
> > L := NAxis1*NAxis2 ; { Size in 16-bit words }
> > N := LBufW ; { 8192 = 16384/2 }
> > I := 0 ;
> > Repeat
> > B1 := InPortB(PortNo) ;
> > B2 := InPortB(PortNo) ;
> > BufA[I] := 256*Word(B1) + B2 ;
> > B1 := InPortB(PortNo) ;
> > B2 := InPortB(PortNo) ;
> > BufB[I] := 256*Word(B1) + B2 ;
> > Inc(I) ;
> > If (I >= N) Then Begin
> > BlockWrite(FileA, BufA, N) ;
> > BlockWrite(FileB, BufB, N) ;
> > Dec(L, N) ;
> > N := L ; If (N > LBufW) Then N := LBufW ;
> > I := 0 ;
> > End ;
> > Until (L <= 0) ;
> >
> > I'm sorry, but I don't know enough BASIC to translate
> > this back. Note that the last disk writes are a
> > different size from the others so I could not
> > use File Of BufType; I was effectively using
> > File Of Word; N is the number of words to be
> > written (record size of 2 Bytes).
> >
> > Andrew Bennett, Avondale Vineyard
> >
>
==============================================================
Douglas L Welch | Office/voicemail (905) 525-9140 x23186
Physics & Astronomy | FAX (905) 546-1252
McMaster University |
Hamilton, Ontario |
Canada L8S 4M1 | E-mail welch@physics.mcmaster.ca
On research leave at LLNL (Oct 1, 2000 - Apr 30, 2001)
LLNL Office/voicemail (925) 424-2857
LLNL FAX (925) 423-0238
Continue to use welch@physics.mcmaster.ca for e-mail
==============================================================