Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504

Странное поведение инкремента

09.08.2021, 12:47. Показов 1077. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
почему при применении счётчика код выполняется дольше, чем при применении случайной выборки?
т.е. если создать переменную и каждую итерацию прибавлять к неё 1, а затем скрмливать её функции, то код работает медленнее, чем если вместо переменной каждый раз генерировать случайные числа
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2021, 12:47
Ответы с готовыми решениями:

Странное поведение
У меня есть модуль, называется module.py: def input(value='',mask = None, placeholder = None, maxlength = None, endkey = 'Enter'): ...

Странное поведение класса
У меня есть класс: def NumberType(): def __init__(self,value): self.value = value self.methods = {} def toString(I): ...

Странное поведение getcwd()
почему запуская проект из PyCharm, без особых настроек запуска print(os.getcwd()) это: C:\Windows\system32 я бы...

12
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
09.08.2021, 13:37
kelod, пример кода?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
09.08.2021, 13:56
Цитата Сообщение от kelod Посмотреть сообщение
почему при применении счётчика код выполняется дольше, чем при применении случайной выборки?
Пруфы в студию!
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
09.08.2021, 14:12  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from ethereum import utils
 
import time
 
import random
 
start_time=time.time()
 
t=1
for i in range(100000):
#while t<10000:
    t+=1
    raw_address = utils.privtoaddr(random.randint(1,100000))
    #raw_address = utils.privtoaddr(t)
 
print("1--- %s seconds ---" % (time.time()-start_time))
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
09.08.2021, 14:21
Цитата Сообщение от kelod Посмотреть сообщение
t=1
Цитата Сообщение от kelod Посмотреть сообщение
t+=1
Цитата Сообщение от kelod Посмотреть сообщение
#raw_address = utils.privtoaddr(t)
utils.privtoaddr(i + 1)

Не по теме:

Кликните здесь для просмотра всего текста

0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
09.08.2021, 14:29  [ТС]
или так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from ethereum import utils
 
import os
import time
 
import random
 
def keytoadrr(pr_key):
    raw_address = utils.privtoaddr(pr_key)
    account_address = utils.checksum_encode(raw_address)
    return account_address
 
start_time=time.time()
 
for i in range(100000):
    keytoadrr(random.randint(1,100000))
        #keytoadrr(i+1)
 
 
print("1--- %s seconds ---" % (time.time()-start_time))
Добавлено через 2 минуты
htArsegg, это я эксперементировал, изначально у меня так и было без всяких т
по существу в чём проблемма?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
09.08.2021, 14:33
Цитата Сообщение от kelod Посмотреть сообщение
по существу в чём проблемма?
Python
1
2
3
4
5
6
7
8
9
10
In [1]: from random import randint
 
In [2]: %%timeit i = 0
   ...: i += 1
   ...:
   ...:
58.5 ns ± 1.31 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
 
In [3]: %timeit randint(1, 100_000)
1.15 µs ± 13.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
...
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
09.08.2021, 14:59  [ТС]
Arsegg, в том то и дело, что инкремент должен быстрее работать, а рандом медленнее, а получается наоборот
первый вариант с рандомом, второй со сложением
Миниатюры
Странное поведение инкремента  
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
09.08.2021, 15:03  [ТС]
если вместо моей функции подставить обычный принт, то да сложение оказывается быстрее почти в 2 раза
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.08.2021, 16:04
Цитата Сообщение от kelod Посмотреть сообщение
по существу в чём проблемма?
В том, что ты не понимая как работает библиотека ethereum и ее функции, пытаешься делать какие-то выводы.
Цитата Сообщение от kelod Посмотреть сообщение
если вместо моей функции подставить обычный принт, то да сложение оказывается быстрее почти в 2 раза
То есть ты, наконец, понял, что инкремент вообще ни при чем?

P.S. Когда тебе в следующий раз придет в голову создать тему вида "Странное поведение (баг) компилятора\функции и т.д.", то 10 раз подумай (побейся об стену), назови себя соответствующим словом, потому что, скорей всего, так оно и есть.

P.S.S. Да, и бенчмарки делаются совершенно не так.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
09.08.2021, 16:22

Не по теме:

Считаю факториал и не понимаю, почему инкремент медленнее random.randint(1, 1))))


0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
10.08.2021, 09:39  [ТС]
Garry Galler, так в ту функцию передаются значения, а откуда я их беру это дело третье, она получило значение, вернула результат, вот только если значения беру из рандома то функция выполняется быстрее, чем из инкримента
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.08.2021, 12:02
Цитата Сообщение от kelod Посмотреть сообщение
вот только если значения беру из рандома то функция выполняется быстрее,
Просто открой исходный код функции utils.privtoaddr (я понятия не имею какую либу ты используешь, а старая ethereum вроде как уже deprecated объявлена) и изучай что она делает и почему с последовательными значения она работает медленнее, чем со случайными. Возможно, тут какая-то скрытая оптимизация срабатывает для рандома...
Но в любом случае я этот код не бенчкал и поэтому пока все вилами по воде писано: действительно ли все так как ты пишешь...
Потому что если взять бенч цикла с инкрементом и цикл с рандомом, то первый работает раз в 10 (или более) быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2021, 12:02
Помогаю со студенческими работами здесь

Странное поведение list.insert()
Написал функцию, которая должна перемешивать слова в строке и распечатывать результат и ключ, по которому можно восстановить исходный...

Странное поведение IDE
Совсем новичок в питоне, да и в целом в программировании. Ситуация такая: вчера игрался с отправкой email сообщения, файл скрипта назывался...

странное поведение интерпретатора
у меня есть список из 50(допустим) ссылок. вида: truelinks = list('http://www.site1.ru/', 'http://www.site2.ru/',...

Странное поведение библиотеки requests
Доброго времени суток! Обнаружил странную особенность библиотеки requests. Заметил это случайно, когда делал для собственного образования...

Странное поведение при работе с массивами
Здравствуйте! Есть код - from tkinter import Tk, Canvas arr = *10]*10 print(arr) def click(e):


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru