Здравствуйте, Denis Ivlev, Вы писали:
DI>Все. Вот теперь разрабатывать закончил. Заняло это аж минуты 3
Продолжаю отрабатывать 600К
Теперь не только плгоритм, но и пруф оф концепт:
| | Код |
| | import random
import time
repeats = 10
users = 1000
width = 2500
height = 2500
view_width = 200
view_height = 100
data = [[0 for x in range(width)] for y in range(height)]
views = None
def rand_point():
return random.randrange(width) - 1, random.randrange(height) - 1
def rand_view():
x, y = rand_point()
return x, y, min(x + view_width, width), min(y + view_height, height)
def match(x, y, x1, y1, x2, y2):
return x1 <= x and x <= x2 and y1 <= y and y <= y2
def modify(x, y):
data[x][y] = data[x][y] + 1
notifications = 0
views = [rand_view() for x in range(users)]
def notify(x, y):
global notifications
for v in views:
if match(x, y, *v):
notifications = notifications + 1
start = time.time()
for i in range(repeats):
for j in range(users):
x, y = rand_point()
modify(x, y)
notify(x, y)
end = time.time()
print('modifications: ', users * repeats)
print('notifications: ', notifications)
print('spend time:', end - start)
print('modifications per sec: ', users * repeats / (end - start))
|
| | |
Вообще неоптимизированный тормозной питон на табличке 2500х2500 при 1000 пользователях выдает ~3950 сериализованных изменений в таблице. Интрига — что-же будет если написать это на плюсах, да еще и несвязанные регионы обрабатывать параллельно?