Log in

View Full Version : which processor for avisynth encoding. Version 2


Jeremy Duncan
17th January 2007, 00:15
Previous test thread (http://forum.doom9.org/showthread.php?t=120371)

The previous thread had different tests and the results were all over the place.
In honor of that thread, then.
I decided to post the same test I ran, and the links to the necessary software.
If we all use the same plugins and run the same test, the data gathered will be useful.
I hope I'm not offending you Pookie, or anybody else.

Anyway. Here's the test. I hope I'm being helpful. :helpful:
________________________________________________________

Avisynth (http://downloads.sourceforge.net/avisynth2/Avisynth_257.exe)
Winrar. To unzip removegrain (http://www.rarlab.com/download.htm)
RemoveGrain 1.0 (http://home.arcor.de/kassandro/RemoveGrain/RemoveGrain.rar)
masktools_alpha (2.0a30) (http://manao4.free.fr/masktools-v2.0a30.zip)
Fluxsmooth (http://www.kvcd.net/sansgrip/avisynth/FluxSmooth-1.1a.zip)
medianblur (http://www.avisynth.org/tsp/medianblur084.zip)
mvtools (http://avisynth.org.ru/mvtools/mvtools-v1.6.2.zip)
TTempSmooth (http://www.missouri.edu/~kes25c/TTempSmoothv094.zip)
wget.exe, test.avs, runme.bat (http://www.bestsharing.com/files/vd7YK204826/Pookies%20Test.zip.html)

Here's a benchmarking script which might provide some info.

1) Download Wget.exe from Here (http://users.ugent.be/~bpuype/cgi-bin/fetch.pl?dl=wget/wget.exe)

2) Copy this batch file, save as Runme.bat

::v1.00
if not exist 7za.exe wget http://markosf.ath.cx/mSoftware/7za.exe
if not exist cpu-z-138.zip wget http://www.cpuid.com/download/cpu-z-138.zip
set path=%path%;c:\windows\system32
if not exist pthreadGC2.dll wget http://sourceware.mirrors.tds.net/pub/sourceware.org/pthreads-win32/dll-latest/lib/pthreadGC2.dll
if not exist ffmpeg.rev7375.7z wget http://tirnanog.fate.jp/mirror/ffmpeg/ffmpeg.rev7375.7z
if not exist Motion1.exe wget http://www.streamcrest.com/Motion1.exe
if not exist yuv2avi.exe wget http://www.streamcrest.com/yuv2avi.exe
if not exist cat.exe wget http://www.ufridman.com/cat-src.zip

7za e -y cpu-z-138.zip
7za e -y ffmpeg.rev7375.7z
7za e -y cat-src.zip

motion1 test.yuv
yuv2avi test.yuv test.avi 525c RGB235
del test.yuv

cpuz.exe -txt=cpuinfo
type cpuinfo.txt | findstr "Specification" >result.txt

type cpuinfo.txt | findstr "L1" >>result.txt
type cpuinfo.txt | findstr "L2" >>result.txt
type cpuinfo.txt | findstr "Memory" | findstr "Size">>memory.txt

for /f "Tokens=3" %%a in (memory.txt) do echo set tmem=%%a >tmem.bat
call tmem.bat


set /a qmem=%tmem%/4
set /a hmem=%tmem%/2
set /a fmem=%tmem%-64

echo setmemorymax(%qmem%) >%qmem%.txt && cat %qmem%.txt test.avs >%qmem%test.avs
echo setmemorymax(%hmem%) >%hmem%.txt && cat %hmem%.txt test.avs >%hmem%test.avs
echo setmemorymax(%fmem%) >%fmem%.txt && cat %fmem%.txt test.avs >%fmem%test.avs


echo. >>result.txt
echo Total Memory Installed=%tmem%MB >>result.txt
echo. >>result.txt
echo %qmem%MB memory >>result.txt
ffmpeg -benchmark -i %qmem%test.avs -an -vcodec rawvideo -y out.avi >>result.txt
echo. >>result.txt
echo %hmem%MB memory >>result.txt
ffmpeg -benchmark -i %hmem%test.avs -an -vcodec rawvideo -y out.avi >>result.txt
echo. >>result.txt
echo %fmem%MB memory >>result.txt
ffmpeg -benchmark -i %fmem%test.avs -an -vcodec rawvideo -y out.avi >>result.txt


notepad result.txt
rem del test.avi
del out.avi


3) Save the following as TEST.AVS (thanks, Didée)

BTW - You'll need to have the plugins below installed. Modify script if your plugins are located elsewhere.


LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\fluxsmooth.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\MedianBlur.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mt_masktools.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\MVTools.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\RemoveGrain.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\Repair.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\TTempSmooth.dll")

aviSource("test.avi").converttoyv12()

trim(100,114)

Bob(0,0.5)

bobbed = last
base = last.minblur(2).FluxSmoothT(9)

bw4_vec = base.MVAnalyse(isb=true, truemotion=false,delta=4,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
bw3_vec = base.MVAnalyse(isb=true, truemotion=false,delta=3,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
bw2_vec = base.MVAnalyse(isb=true, truemotion=false,delta=2,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
bw1_vec = base.MVAnalyse(isb=true, truemotion=false,delta=1,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
fw1_vec = base.MVAnalyse(isb=false, truemotion=false,delta=1,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
fw2_vec = base.MVAnalyse(isb=false, truemotion=false,delta=2,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
fw3_vec = base.MVAnalyse(isb=false, truemotion=false,delta=3,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)
fw4_vec = base.MVAnalyse(isb=false, truemotion=false,delta=4,lambda=512,pel=2,sharp=2,blksize=16,overlap=16/2,pnew=32,idx=1)

bw4_comp = bobbed.MVCompensate(bw4_vec,idx=2)
bw3_comp = bobbed.MVCompensate(bw3_vec,idx=2)
bw2_comp = bobbed.MVCompensate(bw2_vec,idx=2)
bw1_comp = bobbed.MVCompensate(bw1_vec,idx=2)
fw1_comp = bobbed.MVCompensate(fw1_vec,idx=2)
fw2_comp = bobbed.MVCompensate(fw2_vec,idx=2)
fw3_comp = bobbed.MVCompensate(fw3_vec,idx=2)
fw4_comp = bobbed.MVCompensate(fw4_vec,idx=2)

Interleave(bw4_comp,bw3_comp,bw2_comp,bw1_comp,bobbed,fw1_comp,fw2_comp,fw3_comp,fw4_comp)
MedianBlurT(0,0,0,4)
SelectEvery(9,4)

base2 = last
bobbed2 = last

bw4_vec2 = base2.MVAnalyse(isb=true, truemotion=false,delta=4,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
bw3_vec2 = base2.MVAnalyse(isb=true, truemotion=false,delta=3,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
bw2_vec2 = base2.MVAnalyse(isb=true, truemotion=false,delta=2,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
bw1_vec2 = base2.MVAnalyse(isb=true, truemotion=false,delta=1,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
fw1_vec2 = base2.MVAnalyse(isb=false, truemotion=false,delta=1,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
fw2_vec2 = base2.MVAnalyse(isb=false, truemotion=false,delta=2,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
fw3_vec2 = base2.MVAnalyse(isb=false, truemotion=false,delta=3,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)
fw4_vec2 = base2.MVAnalyse(isb=false, truemotion=false,delta=4,lambda=256,pel=2,sharp=2,blksize=8,overlap=8/2,pnew=32,idx=3)

bw4_comp2 = bobbed2.MVCompensate(bw4_vec2,idx=3)
bw3_comp2 = bobbed2.MVCompensate(bw3_vec2,idx=3)
bw2_comp2 = bobbed2.MVCompensate(bw2_vec2,idx=3)
bw1_comp2 = bobbed2.MVCompensate(bw1_vec2,idx=3)
fw1_comp2 = bobbed2.MVCompensate(fw1_vec2,idx=3)
fw2_comp2 = bobbed2.MVCompensate(fw2_vec2,idx=3)
fw3_comp2 = bobbed2.MVCompensate(fw3_vec2,idx=3)
fw4_comp2 = bobbed2.MVCompensate(fw4_vec2,idx=3)

Interleave(bw4_comp2,bw3_comp2,bw2_comp2,bw1_comp2,bobbed2,fw1_comp2,fw2_comp2,fw3_comp2,fw4_comp2)
ttempsmooth(4,8,8,2,2,strength=5,pfclip=last.RemoveGrain(11))
SelectEvery(9,4)

maxx = bobbed.mt_logic(bw1_comp,"max")
\ .mt_logic(fw1_comp,"max")
minn = bobbed.mt_logic(bw1_comp,"min")
\ .mt_logic(fw1_comp,"min")
#.mt_logic(bw2_comp,"max").mt_logic(bw3_comp,"max")
#.mt_logic(fw2_comp,"max").mt_logic(fw3_comp,"max")
#.mt_logic(bw2_comp,"min").mt_logic(bw3_comp,"min")
#.mt_logic(fw2_comp,"min").mt_logic(fw3_comp,"min")

ssharp = mt_lutxy(last,last.RemoveGrain(11), \
"x x y - abs 12 / 1 4 / ^ 12 * x y - 2 ^ x y - 2 ^ 2.3 + / * x y - x y - abs 0.0001 + / * 1 x y - abs 16 / 1 4 / ^ + / +",U=2,V=2)

ssharp.mt_Clamp(maxx,minn,0,0,U=2,V=2)

SeparateFields().SelectEvery(4,0,3).Weave() # before or after,

interleave( selectevery(5,0).FluxSmoothT(7),selectevery(5,1).FluxSmoothT(7),
\ selectevery(5,2).FluxSmoothT(7),selectevery(5,3).FluxSmoothT(7),
\ selectevery(5,4).FluxSmoothT(7) )

# SeparateFields().SelectEvery(4,0,3).Weave() # that's a question

return(last)

#=================================

# Nifty Gauss/Median combination
function MinBlur(clip clp, int r, int "uv")
{
uv = default(uv,3)
uv2 = (uv==2) ? 1 : uv
rg4 = (uv==3) ? 4 : -1
rg11 = (uv==3) ? 11 : -1
rg20 = (uv==3) ? 20 : -1
medf = (uv==3) ? 1 : -200

RG11D = (r==1) ? mt_MakeDiff(clp,clp.RemoveGrain(11,rg11),U=uv2,V=uv2)
\ : (r==2) ? mt_MakeDiff(clp,clp.RemoveGrain(11,rg11).RemoveGrain(11,rg11),U=uv2,V=uv2)
\ : mt_MakeDiff(clp,clp.RemoveGrain(11,rg11).RemoveGrain(20,rg20).RemoveGrain(20,rg20),U=uv2,V=uv2)
RG4D = (r==1) ? mt_MakeDiff(clp,clp.RemoveGrain(4,rg4),U=uv2,V=uv2)
\ : (r==2) ? mt_MakeDiff(clp,clp.medianblur(2,2*medf,2*medf),U=uv2,V=uv2)
\ : mt_MakeDiff(clp,clp.medianblur(3,3*medf,3*medf),U=uv2,V=uv2)
DD = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2)
(r==0) ? clp : clp.mt_MakeDiff(DD,U=uv,V=uv)
return(last)
}
#end

4) Create a folder to place these three files. It should look like this:

Runme.bat
Test.avs
wget.exe

5) Double Click on Runme.bat. It will download the necessary files to run the benchmark.
When it is done, notepad will pop up with your CPU info and processing time.
Multiply the results by 2 and post the info in this thread.


It'll look like this

Specification Intel(R) Pentium(R) M processor 1.60GHz
L1 Data cache 32 KBytes, 8-way set associative, 64-byte line size
L1 Instruction cache 32 KBytes, 8-way set associative, 64-byte line size
L2 cache 2048 KBytes, 8-way set associative, 64-byte line size

Total Memory Installed=504 MB

126MB memory
bench: utime=295.484s multiplied by 2 = 590.968

252MB memory
bench: utime=140.094s multiplied by 2 = 280.188

440MB memory
bench: utime=204.781s multiplied by 2 = 409.562

Pookie
17th January 2007, 01:54
Hey...why not? It can sit beside your SeeSaw Version 3 and Spresso Version 6 Threads. Just remember, this thing is yours now....
http://img412.imageshack.us/img412/2527/zzyxfr2.th.jpg (http://img412.imageshack.us/my.php?image=zzyxfr2.jpg)
I think we've already determined the fastest platform for the immediate future from the original thread - E6600 with 1-2GB RAM, following behind somewhat is the 64 X2 Dual Core Processor 5000+

And from www.anandtech.com

"Another significant update coming in Q2 is that the low end 6000 series Core 2 Duo processors will receive 4MB L2 caches like their more expensive brethren. Currently the E6300 and E6400 both have 2MB L2s, but both chips will be replaced by 4MB versions - the E6320 and E6420 respectively. Clock speeds and other details won’t change, but performance will obviously increase. The best part of it all is that pricing won’t change either, so if you’re contemplating buying an E6300 or E6400 you’d be better off waiting a quarter so you can get the extra cache for free."

zilog jones
17th January 2007, 16:44
I was previously using some older version of RemoveDirt - now it's even slower :rolleyes:, but still quite impressive compared to Jeremy's Pentium M :

Specification Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz
L1 Data cache 2 x 32 KBytes, 8-way set associative, 64-byte line size
L1 Instruction cache 2 x 32 KBytes, 8-way set associative, 64-byte line size
L2 cache 2048 KBytes, 8-way set associative, 64-byte line size

Total Memory Installed=1024 MB

256MB memory
bench: utime=97.766s *2 = 195.532s

512MB memory
bench: utime=52.625s *2 = 105.25s

960MB memory
bench: utime=33.532s *2 = 67.064s

Chipset
------------------------------------------------------------------------------

Northbridge Intel i975X rev. C0
Southbridge Intel 82801GB (ICH7) rev. 01
Graphic Interface PCI-Express
PCI-E Link Width x16
PCI-E Max Link Width x16
Memory Type DDR2
Memory Size 1024 MBytes
Memory Frequency 267.0 MHz (1:1)
CAS# 4.0
RAS# to CAS# 4
RAS# Precharge 4
Cycle Time (tRAS) 12
Bank Cycle Time (tRC) 16

Memory SPD
------------------------------------------------------------------------------

DIMM #1

General
Memory type DDR2
Manufacturer (ID) Corsair (7F7F9E0000000000)
Size 512 MBytes
Max bandwidth PC2-4300 (266 MHz)
Part number VS512MB533D2

Attributes
Number of banks 1
Data width 64 bits
Correction None
EPP no

Timings table
Frequency (MHz) 200 266
CAS# 3.0 4.0
RAS# to CAS# delay 3 4
RAS# Precharge 3 4
TRAS 9 12
TRC 11 15

- Both DIMMs are Corsair Value Select PC2-4200 512MB
- MSI 975X Platinum PowerUp Edition motherboard
- Everything at stock speeds
- Normal CPU temperatures were observed during test (the heating's not on so it's quite cold in here :) ), so I assume there was no throttling
- WinXP SP2 32-bit
- WD Caviar SE16 7200RPM 320GB hard disk
- Not using MT

Isn't it a bit weird that people with 512MB RAM seem to get best results with SetMemoryMax to half but people with 1GB are getting quickest speeds with it set to 960MB?

Also, could the presence of other filters and scripts in the plugins folder affect performance? I have a lot of other junk in there.

Fantacinni
17th January 2007, 17:34
Specification AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ @ 2350Mhz
L1 Data cache 2 x 64 KBytes, 2-way set associative, 64-byte line size
L1 Instruction cache 2 x 64 KBytes, 2-way set associative, 64-byte line size
L2 cache 2 x 512 KBytes, 16-way set associative, 64-byte line size

Total Memory Installed=2048 MB

512MB memory
bench: utime=38.735s *2 = 77.47s

1024MB memory
bench: utime=22.141s *2 = 44.282s

1984MB memory
bench: utime=22.187s *2 = 44.374s

odyn1982
18th January 2007, 23:49
1. Test
- Default test.avs
- Not using MT
- No overclocking
- DDR OCZ Platinum 2x 1GB (2-3-2-5-1T)
- Asus A8N-SLI Deluxe nForce4
- Everything at stock speeds
- Normal CPU temperatures
- WinXP SP2 32-bit En
- Raid-0 2x 250GB Maxtor SATASpecification AMD Athlon(tm) 64 X2 Dual Core Processor 4400+ @ 2200Mhz
L1 Data cache 2 x 64 KBytes, 2-way set associative, 64-byte line size
L1 Instruction cache 2 x 64 KBytes, 2-way set associative, 64-byte line size
L2 cache 2 x 1024 KBytes, 16-way set associative, 64-byte line size

Total Memory Installed=2048 MB

512MB memory
bench: utime=54.844s

1024MB memory
bench: utime=31.765s

1984MB memory
bench: utime=32.063s

2. Test
- Changed plugins to RemoveGrainSSE3.dll and RepairSSE3.dll
- Using MT; added: SetMTMode(2,2)Specification AMD Athlon(tm) 64 X2 Dual Core Processor 4400+ @ 2200Mhz
L1 Data cache 2 x 64 KBytes, 2-way set associative, 64-byte line size
L1 Instruction cache 2 x 64 KBytes, 2-way set associative, 64-byte line size
L2 cache 2 x 1024 KBytes, 16-way set associative, 64-byte line size

Total Memory Installed=2048 MB

512MB memory
bench: utime=39.375s

1024MB memory
bench: utime=15.875s

1984MB memory
bench: utime=15.937s

Taurus
19th January 2007, 07:34
off topic:
@Pookie

Join Date: Apr 2005
Posts: 1,000 :thanks: