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

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

09.08.2021, 12:47. Показов 1118. Ответов 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
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,762
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
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru