Browse Source

添加内存占用的测试代码

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

+ 2
- 2
README.md View File

librf有以下特点: librf有以下特点:


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

+ 26
- 0
benchmark/benchmark_async_mem.cpp View File


#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

resumef::promise_t<int64_t> awaitable; 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); std::this_thread::sleep_for(500ms);
st->set_value(val * val); st->set_value(val * val);
st->unlock();
}).detach(); }).detach();
return awaitable.get_future(); return awaitable.get_future();

+ 5
- 0
vs_proj/librf.cpp View File

extern void resumable_main_channel(); extern void resumable_main_channel();
extern void resumable_main_cb(); extern void resumable_main_cb();
extern void resumable_main_benchmark_mem();
int main(int argc, const char * argv[]) int main(int argc, const char * argv[])
{ {
resumable_main_benchmark_mem();
return 0;
resumable_main_yield_return(); resumable_main_yield_return();
resumable_main_timer(); resumable_main_timer();
resumable_main_suspend_always(); resumable_main_suspend_always();

+ 5
- 4
vs_proj/librf.vcxproj View File

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

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

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

Loading…
Cancel
Save