friends: 100
]
- @max_concurrency 30
+ @max_concurrency 10
@spec generate(keyword()) :: User.t()
def generate(opts \\ []) do
end
def generate_users(max) do
- IO.puts("Starting generating #{opts[:users]} users...")
+ IO.puts("Starting generating #{max} users...")
- {time, _} =
+ {time, users} =
:timer.tc(fn ->
Task.async_stream(
1..max,
max_concurrency: @max_concurrency,
timeout: 30_000
)
- |> Stream.run()
+ |> Enum.to_list()
end)
- IO.puts("Generating users take #{to_sec(time)} sec.\n")
+ IO.puts("Generating users took #{to_sec(time)} sec.\n")
+ users
end
defp generate_user(i) do
end
def make_friends(main_user, max) when is_integer(max) do
- IO.puts("Starting making friends for #{opts[:friends]} users...")
+ IO.puts("Starting making friends for #{max} users...")
{time, _} =
:timer.tc(fn ->
|> run_stream(main_user)
end)
- IO.puts("Making friends take #{to_sec(time)} sec.\n")
+ IO.puts("Making friends took #{to_sec(time)} sec.\n")
end
- defp make_friends(%User{} = main_user, %User{} = user) do
+ def make_friends(%User{} = main_user, %User{} = user) do
{:ok, _} = User.follow(main_user, user)
{:ok, _} = User.follow(user, main_user)
end