(trunk libT) #2589: unnecessary calls to time() cause high CPU load

This commit is contained in:
Charles Kerr 2009-11-19 03:00:20 +00:00
parent 84f8fb5258
commit 2b71014888
1 changed files with 7 additions and 7 deletions

View File

@ -2324,10 +2324,10 @@ tr_close_type_t;
static tr_close_type_t static tr_close_type_t
shouldPeerBeClosed( const Torrent * t, shouldPeerBeClosed( const Torrent * t,
const tr_peer * peer, const tr_peer * peer,
int peerCount ) int peerCount,
const time_t now )
{ {
const tr_torrent * tor = t->tor; const tr_torrent * tor = t->tor;
const time_t now = time( NULL );
const struct peer_atom * atom = peer->atom; const struct peer_atom * atom = peer->atom;
/* if it's marked for purging, close it */ /* if it's marked for purging, close it */
@ -2394,11 +2394,12 @@ getPeersToClose( Torrent * t, tr_close_type_t closeType, int * setmeSize )
int i, peerCount, outsize; int i, peerCount, outsize;
tr_peer ** peers = (tr_peer**) tr_ptrArrayPeek( &t->peers, &peerCount ); tr_peer ** peers = (tr_peer**) tr_ptrArrayPeek( &t->peers, &peerCount );
struct tr_peer ** ret = tr_new( tr_peer *, peerCount ); struct tr_peer ** ret = tr_new( tr_peer *, peerCount );
const time_t now = time( NULL );
assert( torrentIsLocked( t ) ); assert( torrentIsLocked( t ) );
for( i = outsize = 0; i < peerCount; ++i ) for( i = outsize = 0; i < peerCount; ++i )
if( shouldPeerBeClosed( t, peers[i], peerCount ) == closeType ) if( shouldPeerBeClosed( t, peers[i], peerCount, now ) == closeType )
ret[outsize++] = peers[i]; ret[outsize++] = peers[i];
sortPeersByLivelinessReverse ( ret, NULL, outsize, tr_date( ) ); sortPeersByLivelinessReverse ( ret, NULL, outsize, tr_date( ) );
@ -2438,10 +2439,9 @@ compareCandidates( const void * va, const void * vb )
} }
static int static int
getReconnectIntervalSecs( const struct peer_atom * atom ) getReconnectIntervalSecs( const struct peer_atom * atom, const time_t now )
{ {
int sec; int sec;
const time_t now = time( NULL );
/* if we were recently connected to this peer and transferring piece /* if we were recently connected to this peer and transferring piece
* data, try to reconnect to them sooner rather that later -- we don't * data, try to reconnect to them sooner rather that later -- we don't
@ -2507,7 +2507,7 @@ getPeerCandidates( Torrent * t, int * setmeSize )
continue; continue;
/* don't reconnect too often */ /* don't reconnect too often */
interval = getReconnectIntervalSecs( atom ); interval = getReconnectIntervalSecs( atom, now );
if( ( now - atom->time ) < interval ) if( ( now - atom->time ) < interval )
{ {
tordbg( t, "RECONNECT peer %d (%s) is in its grace period of %d seconds..", tordbg( t, "RECONNECT peer %d (%s) is in its grace period of %d seconds..",