From: Eric A. W. <ew...@cc...> - 2003-09-17 09:09:16
|
> > I do not compile the timidity program, because i don't know how to do > > it. Maybe you > > could explain it to me? > > Well, I'm not familiar with this... especially for Windows compilers. > See "configs\msc-project.zip" inside the source distribution. There may > be the project files. I use cygwin with mingw32 to build the console version. To configure it, use: ./configure CC='gcc -mno-cygwin' LD='gcc -mno-cygwin' --enable-vt100 --enable-ncurses --without-x --enable-spline=gauss And to build it: make CFLAGS='-mno-cygwin -O3 -fomit-frame-pointer -funroll-all-loops -ffast-math -foptimize-sibling-calls -fforce-mem -mcpu=athlon-xp -momit-leaf-frame-pointer -malign-double -maccumulate-outgoing-args -mno-align-stringops -minline-all-stringops' You don't really need to use all of the optimization flags after -O3, but -fomit-frame-pointer and -funroll-all-loops are a good idea. If you do not already have ncurses installed (or pdcurses, I use 2.4beta, since 2.4 final had some issues) and compiled with -mno-cygwin, then you won't be able to use the ncurses interface when compiled with -mno-cygwin. -mno-cygwin uses MinGW32 instead of the cygwin1.dll unix translation layer. I use -mno-curses so that I can build binaries that can run anywhere, without requiring cygwin1.dll to run. If you want to use regular cygwin instead (cygwin has an option to auto-download and install ncurses for you), just remove the -mno-cygwin flag from the lines I gave above, at which point the CC and LD settings will no longer be needed for the configure script. I use pdcurses because it does not require an ANSI text display driver (such as ansi.sys) or an /etc/termcap file, both of which are required for ncurses to work in a windows DOS box (at least they were the last time I tried), and are not things that the average user would have installed on their machines. > No. That option is compiled in for now. Is it desirable to make this a > switch? I think that the "Lagrange" interpolation (it's actually the Newton form of the polynomial, but I don't think anyone reading this is going to be that picky about it ^_^) is faster than -N 3 third order Gauss (but I'm not sure, I don't remember the results of those benchmarks very well), since it uses all int32 math, whereas Gauss uses doubles. Cubic spline is a good bit slower than Lagrange, and they have roughly the same accuracy, so Lagrange is probably preferable to cubic spline. I don't know if cubic spline is any faster than a 3rd order Gauss polynomial or not. I do know that 3rd order Gauss is more accurate than either cubic spline or 3rd order Lagrange/Newton. Since 3rd order Gauss is still pretty fast, I would prefer the Gauss interpolation, since it is more accurate, and it allows you to specify even higher orders of interpolation (up to -N 34 if your CPU can handle it). -N 0 will use linear interpolation, but will still be a little slower than if LINEAR_INTERPOLATION was defined, due to the check for reduce_quality_flag in the interpolation loop. Gauss interpolation should be the best choice for most users, since it gives a large amount of control over the quality/speed of the program. I do not think it would be a good idea to make a runtime option that lets you switch between Gauss and one of the 3rd order interpolation modes. Checking for this option inside the interpolation loop would add more overhead, which would lessen any speed gain that Lagrange has over 3rd order Gauss. The main reason to define LAGRANGE_INTERPOLATION would be to use higher quality interpolation (better than linear) on old, slow CPUs that may not be quite fast enough to use 3rd order Gauss, but are fast enough to use something higher than linear or -N 0. Keeping the interpolation modes as #defines allows for the highest speed, which is a must for the old, slow CPUs that would require Lagrange instead of Gauss. Making it a runtime option would slow it down, which would defeat the purpose of using Lagrange in the first place. I think it is best to leave the interpolation modes defined at compile time for best speed. -Eric |