Встроенный Производительность Метод испытания Python каждый список типов данных

среда тестирования

Коды называются здесь в MacOS системе CentOS7 теста, Python является версия 3.6.8.

Тестовый модуль

тестовый модуль Python построен timeit модули:

Модуль timeit может быть использован для тестирования небольшой Python скорости выполнения кода.

Таймер класса

класс timeit.Timer (STMT = ' проход ' , настройка = ' проходят ' , таймер = <функция таймера>)

Таймер является мерой небольших кусков кода класса скорости исполнения.

STMT параметр должен быть проверен код заявление (Постулаты);

Параметр установки требуется при выполнении набора кода;

таймер параметр является функцией таймера, и зависит от платформы.

Метод Таймер класса timeit

timeit.Timer.timeit (число = 1000000)

Метод скорости выполнения объекта испытания заявление класса Timer. Число аргумент число испытаний, когда тестовый код, по умолчанию 1000000. Метод возвращает среднее время выполнения потребляющих код, тип секунд поплавка.

Встроенный метод списка тестирования производительности

Мы знаем, что, чтобы создать список список формулы или Append, Insert, расширить эти методы могут быть использованы, и теперь мы смотрим на эффективность этих методов:

от timeit импорта Таймер


Защиту test_list ():
    LST = список (диапазон (1000 ))

Защиту test_generation ():
    LST = [я для я в диапазоне (1000 )]


Защиту test_append ():
    LST = []
     для я в диапазоне (1000 ):
        lst.append (я)

Защиту test_add ():
    LST = []
     для я в диапазоне (1000 ):
        LST + = [я]

# Во главе списка ВСТАВИТЬ 
DEF test_insert_zero ():
    LST = []
     для я в диапазоне (1000 ):
        lst.insert (0, я)

# В списке хвостовой ВСТАВИТЬ 
DEF test_insert_end ():
    LST = []
     для я в диапазоне (1000 ):
        lst.insert ( -1 , я)

Защиту test_extend ():
    LST = []
    lst.extend (список (диапазон ( 1000 )))


t1 = таймер ( " test_list () " , " от __main__ импорта test_list " )
 печать" test_list принимает {t1.timeit (число = 1000)} секунд " )

t2 = Таймер ( " test_generation () " , " от __main__ импорта test_generation " )
 печать" test_generation принимает {t2.timeit (число = 1000)} секунд " )

t3 = Таймер ( " test_append () " , " от __main__ импорта test_append " )
 печать" test_append принимает {t3.timeit (число = 1000)} секунд " )

t4 = Таймер ( " test_add () " , " от __main__ импорта test_add " )
 печать" test_add принимает {t4.timeit (число = 1000)} секунд " )

t5 = Таймер ( " test_insert_zero () " , " от __main__ импорта test_insert_zero " )
 печать" test_insert_zero принимает {t5.timeit (число = 1000)} секунд " )

t6 = Таймер ( " test_insert_end () " , " от __main__ импорта test_insert_end " )
 печать" test_insert_end принимает {t6.timeit (число = 1000)} секунд " )

T7 = Таймер ( " test_extend () " , " от __main__ импорта test_extend " )
 печать" test_extend принимает {t7.timeit (число = 1000)} секунд " )

Мы посмотрим под систему MacOS, результаты приведенного выше кода:

«»» 
Test_list занимает 0.012904746999993222 секунд 
test_generation занимает 0.03530399600003875 секунды
test_append принимает 0.0865129750000051 секунд
test_add принимает 0.08066114099983679 секунды
test_insert_zero принимает 0.30594958500023495 секунд
test_insert_end принимает 0.1522782449992519 секунд
test_extend занимает 0.017534753999825625 секунд
«»»

Мы можем увидеть: список непосредственно используя самый высокий метод эффективности сильного хода, а затем с помощью списка формул и Append прямого пути к повышению эффективности как затем и справедливо; минимальной эффективности вставки методы - и царапанию вставлено менее эффективно , чем вставляется с задней эффективностью! Наконец, мы превратим сильный список , используя метод расширения для эффективности процесса в новый список не были значительно сокращены.

Тогда попробуйте результаты внедрения системы Linux:

Список методы испытаний поп производительности

поп может быть удалены из позиции 0 каждого элемент, вы можете также удалять элементы (по умолчанию удаления тыльного элемента) от последней позиции, и теперь мы должны проверить сравнение производительности два удаления элементов из разных позиций:

от timeit импорта Таймер

Защиту test_pop_zero ():
    LST = список (диапазон (2000 ))
     для I в диапазоне (2000 ):
        lst.pop (0)


Защиту test_pop_end ():
    LST = список (диапазон (2000 ))
     для I в диапазоне (2000 ):
        lst.pop ()


t1 = таймер ( " test_pop_zero () " , " от __main__ импорта test_pop_zero " )
 печать" test_pop_zero принимает {t1.timeit (число = 1000)} секунд " )

t2 = Таймер ( " test_pop_end () " , " от __main__ импорта test_pop_end " )
 печать" test_pop_end принимает {t2.timeit (число = 1000)} секунд " )

В результатах реализации программы под MacOS:

test_pop_zero занимает 0.5015365449999081 секунд 
test_pop_end принимает
0.22170215499954793 секунд

Тогда мы пробуем результаты системы Linux:

 

Мы можем видеть: много высоких удаление элементов из конца списка, чтобы удалить из головы эффективной, чем эффективность!

Небольшая яма на методе вставки списка

Если вы хотите, чтобы создать список [0,1,2,3,4,5], а затем использовать метод вставки (конечно, используя эффективность метода вставки будет намного ниже, рекомендуется использовать другие методы), так что есть проблема, посмотрите на эту запись:

Защиту test_insert ():
    LST = []
     для я в диапазоне (6 ):
        lst.insert ( -1 , я)
         печати (ЛСТ)

test_insert () 

Результаты оказались так - первый элемент был включен в финале!

[0]
[ 1 , 0]
[ 1, 2 , 0]
[ 1, 2, 3 , 0]
[ 1, 2, 3, 4 , 0]
[ 1, 2, 3, 4, 5, 0]

~~~

рекомендация

отwww.cnblogs.com/paulwhw/p/12150685.html