Browse Source

添加内存占用的测试代码

tags/v2.9.7
tearshark 6 years ago
parent
commit
67a3e653ed

+ 2
- 2
README.md View File

@@ -12,9 +12,9 @@ librf是一个基于C++ Coroutines提案 ‘Stackless Resumable Functions’编
librf有以下特点:

* 1.基于C++17提案'Stackless Resumable Functions'编写的非对称stackless协程库,可以以同步的方式编写简单的代码,同时获得异步的性能
* 2.理论上支持海量协程, 创建100万个协程只需使用<待测试>物理内存
* 2.理论上支持海量协程, 创建100万个协程只需使用<820M>物理内存
* 3.提供协程锁(mutex), 定时器, channel等特性, 帮助用户更加容易地编写程序
* 4.可以很好的跟asio,libuv等库结合,能更现有的callback范式的异步/延迟代码结合
* 4.可以很好的跟asio,libuv等库结合,能跟现有的callback范式的异步/延迟代码很好的结合
* 5.目前还处于实验状态,不对今后正式的C++ Coroutines支持有任何正式的承诺
* 如果你发现了任何bug、有好的建议、或使用上有不明之处,可以提交到issue,也可以直接联系作者:

+ 26
- 0
benchmark/benchmark_async_mem.cpp View File

@@ -0,0 +1,26 @@

#include <chrono>
#include <iostream>
#include <string>
#include <conio.h>
#include <thread>
#include "librf.h"
const size_t N = 1000000;
void resumable_main_benchmark_mem()
{
using namespace std::chrono;
for (size_t i = 0; i < N; ++i)
{
GO
{
for(size_t k = 0; k<100; ++k)
co_await resumef::sleep_for(10s);
};
}
resumef::g_scheduler.run_until_notask();
}

+ 1
- 2
tutorial/test_async_cb.cpp View File

@@ -14,11 +14,10 @@ auto async_get_long(int64_t val)
resumef::promise_t<int64_t> awaitable;
std::thread([val, st = awaitable._state->lock()]
std::thread([val, st = awaitable._state]
{
std::this_thread::sleep_for(500ms);
st->set_value(val * val);
st->unlock();
}).detach();
return awaitable.get_future();

+ 5
- 0
vs_proj/librf.cpp View File

@@ -15,8 +15,13 @@ extern void resumable_main_dynamic_go();
extern void resumable_main_channel();
extern void resumable_main_cb();
extern void resumable_main_benchmark_mem();
int main(int argc, const char * argv[])
{
resumable_main_benchmark_mem();
return 0;
resumable_main_yield_return();
resumable_main_timer();
resumable_main_suspend_always();

+ 5
- 4
vs_proj/librf.vcxproj View File

@@ -89,7 +89,7 @@
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\librf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/await /stdlast++ %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/await /std:c++latest </AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -103,7 +103,7 @@
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\librf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/await /std:c++latest %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/await /std:c++latest </AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -119,7 +119,7 @@
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\librf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/await /stdlast++ %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/await /std:c++latest </AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -137,7 +137,7 @@
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\librf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/await /stdlast++ %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/await /std:c++latest </AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -147,6 +147,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\benchmark\benchmark_async_mem.cpp" />
<ClCompile Include="..\librf\src\event.cpp" />
<ClCompile Include="..\librf\src\mutex.cpp" />
<ClCompile Include="..\librf\src\rf_task.cpp" />

+ 6
- 0
vs_proj/librf.vcxproj.filters View File

@@ -17,6 +17,9 @@
<Filter Include="tutorial">
<UniqueIdentifier>{d82e4930-c171-4b70-9ebb-cdec7218ff9c}</UniqueIdentifier>
</Filter>
<Filter Include="benchmark">
<UniqueIdentifier>{0fd1274a-193b-4d6a-b19e-58db935ed5c6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="librf.cpp">
@@ -79,6 +82,9 @@
<ClCompile Include="..\tutorial\test_async_yield_return.cpp">
<Filter>tutorial</Filter>
</ClCompile>
<ClCompile Include="..\benchmark\benchmark_async_mem.cpp">
<Filter>benchmark</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\librf\librf.h">

Loading…
Cancel
Save