More speed up, How to write? 2 loops + 1 flag
Posted: Mon Aug 06, 2012 12:30 am
Hello
Today, I abandon My music software to shareware. coz, alone...
I want to more optimize follows code. EndThread flg need.
and I want to use ! FASM code.
I don't know protect for purebasic inter variable.
My music software completed making. Just hi-end sounds impression.
overtook "Foobar2000", "Fidelia advance", "AIMP", and other software.
But weak point is heavy process.
Bug head Ver1.752 execute binary
http://purebasic.coolverse.jp/bbs/downl ... php?id=262
Thank you
Today, I abandon My music software to shareware. coz, alone...
I want to more optimize follows code. EndThread flg need.
and I want to use ! FASM code.
I don't know protect for purebasic inter variable.
My music software completed making. Just hi-end sounds impression.
overtook "Foobar2000", "Fidelia advance", "AIMP", and other software.
But weak point is heavy process.
Bug head Ver1.752 execute binary
http://purebasic.coolverse.jp/bbs/downl ... php?id=262
Code: Select all
Procedure LPF2048(*buffer_audio_ptr, *lpf_table_ptr, *out_buffer_ptr)
;/ http://forum.purebasic.com/english/viewtopic.php?f=35&t=47679
; Thanks "Wilbert in Netherlands"
!MOV Ecx, [p.p_lpf_table_ptr]
!MOV Edx, [p.p_buffer_audio_ptr]
!SUB Edx, 8184
!PXOR xmm2, xmm2
!MOV Eax, 2047
!align 4
!InterLoop:
!movq xmm0, [Ecx] ; sinc
!movlhps xmm0, xmm0
!cvtps2pd xmm1, [Edx] ; L + R
!mulpd xmm1, xmm0
!ADDPD xmm2, xmm1
!ADD Ecx, 8
!ADD Edx, 8
!DEC Eax
!JNZ InterLoop
!cvtpd2ps xmm2, xmm2
!MOV Edx, [p.p_out_buffer_ptr]
!movq [Edx], xmm2
EndProcedure
;/ I want to follow code, more optimize.
Procedure LowPathFilter()
Shared EndThread.b
For pos=0 To length Step 8
LPF2048(*in+pos+8192*2, *lpf_table2048, *out+pos)
If EndThread
Break
EndIf
Next
EndProcedure
;/ END
Procedure Main()
Shared EndThread.b = 0
Protected Thread.l
Thread.l = CreateThread(@LowPathFilter(),0)
While IsThread(Thread) : Delay(1) : Wend
EndProcedure