Skip to content

Instantly share code, notes, and snippets.

@Zatvobor
Last active December 12, 2015 06:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zatvobor/4732830 to your computer and use it in GitHub Desktop.
Save Zatvobor/4732830 to your computer and use it in GitHub Desktop.
Erlang R15B03, CouchDB branch#1.2.x 1] Why `in_case(single_process)` produces so many `inactive` memory on Mac OS X in case when `<<"medianet:album:10000053">>` document size is 67.19Kb?. besides, `in_case(spawned_processes)` doesn't; 2] moreover, `in_case(spawned_update_processes)` still continue produce an `inactive` memory;
-module(simple_couch_db_doc_behavior).
-compile(export_all).
db_and_doc() ->
{<<"seed_labeled_prod">>, <<"medianet:album:10000023">>}.
read_write() ->
{DbName, DocId} = db_and_doc(),
{ok, Db} = couch_db:open_int(DbName, []),
{ok, Doc} = couch_db:open_doc(Db, DocId),
{Body} = couch_doc:to_json_obj(Doc, []),
couch_db:update_doc(Db, couch_doc:from_json_obj({Body}), []),
couch_db:close(Db).
write(Body) ->
{DbName, _DocId} = db_and_doc(),
{ok, Db} = couch_db:open_int(DbName, []),
couch_db:update_doc(Db, couch_doc:from_json_obj({Body}), []),
couch_db:close(Db).
read() ->
{DbName, DocId} = db_and_doc(),
{ok, Db} = couch_db:open_int(DbName, []),
{ok, Doc} = couch_db:open_doc(Db, DocId),
{Body} = couch_doc:to_json_obj(Doc, []),
couch_db:close(Db),
Body.
run(Scenario) ->
spawn(fun() -> in_case(Scenario) end).
% simple_couch_db_doc_behavior:in_case(single_process).
in_case(single_process) ->
Seq = lists:seq(1, 30000),
Try = fun(_) -> read_write() end,
lists:foreach(Try, Seq);
% simple_couch_db_doc_behavior:in_case(spawned_processes).
in_case(spawned_processes) ->
Seq = lists:seq(1, 5000),
Try = fun(_) ->
spawn(fun() -> read_write() end)
end,
lists:foreach(Try, Seq);
% simple_couch_db_doc_behavior:in_case(spawned_update_processes).
in_case(spawned_update_processes) ->
Seq = lists:seq(1, 30000),
Try = fun(_) ->
Doc = read(),
spawn(fun() -> write(Doc) end)
end,
lists:foreach(Try, Seq).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment