221V 3 лет назад
Родитель
Сommit
373aeb3e5b
2 измененных файлов с 84 добавлено и 61 удалено
  1. 62 47
      README.md
  2. 22 14
      apps/myapp/src/test.erl

+ 62 - 47
README.md

@@ -42,6 +42,14 @@
 
 ---
 
+Q: тобто в одну секунду йдуть і 20k нових, і ще 20k видалення існуючих?  
+просто 20k нових та 20k спрацювань не рахується?  
+
+A: приходят заявки на выполнение через 5 секунд, часть из них отменяется ( удаление )  
+получается да, одновременно  
+
+---
+
 ```
 $ make
 $ make start
@@ -72,58 +80,65 @@ tick: "13" 13
 
 % gen_server:cast add/delete
 (myapp@127.0.0.1)2> test:testn(300).
-40
-28
-29
-26
-34
-25
-31
-26
-21
-20
-24
-24
-30
-27
-30
-28
-34
-26
-28
-29
-27
-35
-28
-...
 ok
+57
+59
+57
+57
+48
+58
+62
+41
+61
+49
+44
+52
+47
+64
+53
+48
+42
+51
+59
+58
+47
+44
+60
+58
+52
+60
+...
+"the end"
 
 
 % gen_server:call add/delete
 (myapp@127.0.0.1)3> test:testn_b(300).
-110
-111
-178
-136
-114
-108
-177
-141
-148
-109
-175
-177
-115
-177
-179
-178
-176
-178
-209
-187
-176
-140
-...
 ok
+238
+236
+221
+282
+236
+224
+228
+234
+357
+228
+356
+235
+228
+225
+224
+237
+232
+236
+239
+233
+243
+247
+258
+247
+...
+"the end"
 ```
 

+ 22 - 14
apps/myapp/src/test.erl

@@ -46,49 +46,57 @@ test2() ->
   ok.
 
 
-testn(0) -> ok;
+testn(0) -> io:format("~p~n",["the end"]);
 testn(T) -> % T -- умовно секунди - кількість циклів по 20_000 нових заявок та 20_000 видалень
   spawn(fun() ->
+    timer:sleep(1000),
+    testn(T - 1)
+  end),
+  
+  spawn(fun() ->
     T1 = erlang:system_time(millisecond),
     testn_h(T rem 2 =:= 0),
     T2 = erlang:system_time(millisecond),
     io:format("~p~n",[T2 - T1]),
     ok
   end),
-  
-  %timer:sleep(1000),
-  timer:sleep(900),
-  testn(T - 1).
+  ok.
 
 testn_h(true) ->
-  [myapp_events2:add_task(integer_to_list(X), X, dynamic, 1) || X <- lists:seq(1, 20_000)],
+  [myapp_events2:add_task(integer_to_list(X), X, dynamic, 5) || X <- lists:seq(1, 20_000)],
+  [myapp_events2:delete_task(integer_to_list(X), X) || X <- lists:seq(10_001, 30_000)],
   ok;
 testn_h(_) ->
   Timestamp_Now = erlang:system_time(second),
-  [myapp_events2:add_task(integer_to_list(X), X, static, Timestamp_Now + 1) || X <- lists:seq(20_001, 40_000)],
+  [myapp_events2:add_task(integer_to_list(X) ++ ".", X, static, Timestamp_Now + 5) || X <- lists:seq(20_001, 40_000)],
+  [myapp_events2:delete_task(integer_to_list(X) ++ ".", X) || X <- lists:seq(30_001, 50_000)],
   ok.
 
 
-testn_b(0) -> ok;
+testn_b(0) -> io:format("~p~n",["the end"]);
 testn_b(T) -> % T -- умовно секунди - кількість циклів по 20_000 нових заявок та 20_000 видалень
   spawn(fun() ->
+    timer:sleep(1000),
+    testn_b(T - 1)
+  end),
+  
+  spawn(fun() ->
     T1 = erlang:system_time(millisecond),
     testn_h2(T rem 2 =:= 0),
     T2 = erlang:system_time(millisecond),
     io:format("~p~n",[T2 - T1]),
     ok
   end),
-  
-  %timer:sleep(1000),
-  timer:sleep(900),
-  testn_b(T - 1).
+  ok.
 
 testn_h2(true) ->
-  [myapp_events2:add_task_b(integer_to_list(X), X, dynamic, 1) || X <- lists:seq(1, 20_000)],
+  [myapp_events2:add_task_b(integer_to_list(X), X, dynamic, 5) || X <- lists:seq(1, 20_000)],
+  [myapp_events2:delete_task_b(integer_to_list(X), X) || X <- lists:seq(10_001, 30_000)],
   ok;
 testn_h2(_) ->
   Timestamp_Now = erlang:system_time(second),
-  [myapp_events2:add_task_b(integer_to_list(X), X, static, Timestamp_Now + 1) || X <- lists:seq(20_001, 40_000)],
+  [myapp_events2:add_task_b(integer_to_list(X) ++ ".", X, static, Timestamp_Now + 5) || X <- lists:seq(20_001, 40_000)],
+  [myapp_events2:delete_task_b(integer_to_list(X) ++ ".", X) || X <- lists:seq(30_001, 50_000)],
   ok.