Optimizations of JT9 and JT65 decoders; change clock in timer routine.

Both decoders now have slightly better performance and faster
execution.  The rare "duplicate decodes" in JT9 were eliminated.
On Windows, at least, calls to f90 routine system_clock() do not
provide correct wall time increments.  Changed to using secnds()
instead.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4571 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor
2014-10-30 19:29:16 +00:00
parent 7ef6688869
commit 4fea8ebd0c
5 changed files with 57 additions and 70 deletions
+8 -11
View File
@@ -21,7 +21,6 @@ subroutine decoder(ss,id2)
common/tracer/limtrace,lu
save
call system_clock(iclock0,iclock_rate,iclock_max) !###
nfreqs0=0
nfreqs1=0
ndecodes0=0
@@ -84,13 +83,13 @@ subroutine decoder(ss,id2)
dblim=db(864.0/nsps8) - 26.2
do nqd=1,0,-1
limit=1000
ccflim=4.0
limit=5000
ccflim=3.0
red2lim=1.6
schklim=2.2
if(ndepth.eq.2) then
limit=10000
ccflim=3.5
ccflim=2.7
endif
if(ndepth.ge.3 .or. nqd.eq.1) then
limit=100000
@@ -135,17 +134,15 @@ subroutine decoder(ss,id2)
freq,drift,schk,i1SoftSymbols)
call timer('softsym ',1)
! write(71,3001) nqd,i,f,fpk,ccfred(i),red2(i),schk
!3001 format(2i6,2f8.1,3f6.1)
! call flush(71)
if(schk.lt.schklim) cycle
sync=(syncpk+1)/4.0
if(maxval(i1SoftSymbols).eq.0) cycle
if(nqd.eq.1 .and. ((sync.lt.0.5) .or. (schk.lt.2.0))) cycle
if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.schklim))) cycle
call timer('decode9 ',0)
call decode9(i1SoftSymbols,limit,nlim,msg)
call timer('decode9 ',1)
sync=(syncpk+1)/4.0
if(sync.lt.0.0 .or. snrdb.lt.dblim-2.0) sync=0.0
nsync=sync
if(nsync.gt.10) nsync=10
@@ -183,7 +180,7 @@ subroutine decoder(ss,id2)
call jt65a(dd,npts65,newdat,nutc,nf1,nf2,nfqso,ntol65,nagain,ndecoded)
endif
!### JT65 is not yet producing info for nsynced, ndecoded.
! JT65 is not yet producing info for nsynced, ndecoded.
800 write(*,1010) nsynced,ndecoded
1010 format('<DecodeFinished>',2i4)
call flush(6)