summary refs log blame commit diff stats
path: root/test/bm_human_readable.py
blob: 83f2a057afa8ab4a15d45f0bac7202bd42298bbe (plain) (tree)












































                                                                       
# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from ranger.ext.human_readable import *

# The version before 2010/06/24:
import math
UNITS = 'BKMGTP'
MAX_EXPONENT = len(UNITS) - 1
def human_readable_old(byte, seperator=' '):
	if not byte:
		return '0'

	exponent = int(math.log(byte, 2) / 10)
	flt = round(float(byte) / (1 << (10 * exponent)), 2)

	if exponent > MAX_EXPONENT:
		return '>9000' # off scale

	if int(flt) == flt:
		return '%.0f%s%s' % (flt, seperator, UNITS[exponent])

	else:
		return '%.2f%s%s' % (flt, seperator, UNITS[exponent])

class benchmark_human_readable(object):
	def bm_current(self, n):
		for i in range(n):
			human_readable((128 * i) % 2**50)

	def bm_old(self, n):
		for i in range(n):
			human_readable_old((128 * i) % 2**50)
='#n414'>414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475