如何在使用Boost C++编写的php web应用程序中读取地图(在共享区域)?
我使用C ++编写了一张地图(键,值),共享区域中的bubost库. void CreateIndexMap() { shared_memory_object::remove(Getsharedmemoryregion()); managed_shared_memory segment(create_only,Getsharedmemoryregion(), 10000000); void_allocator alloc_inst (segment.get_segment_manager()); complex_map_type *mymap = segment.construct("MyMap")(std::less(), alloc_inst); } 在共享区域中创建内存图: void UpdateIndexMap(std::string str,
0 2023-05-29
编程技术问答社区
用于C++的YAML序列化库?
yaml似乎是配置文件和数据绑定持久性对象的绝佳格式... 是否有处理YAML的C ++库? Boost::Serialization有YAML选项的计划吗? 编辑:我更喜欢一个oo库. 解决方案 快速搜索给了我: yaml-cpp 其他解决方案 尝试从 编辑2014 :最近的发展, 编辑2019 :还没有尝试,但这似乎是一个严重的看法: https://github.com/rwols/yaml-archive 其他解决方案 我找到了这个,如果您使用它,请让我知道它是如何为您做的,并在可能的情况下发布一些示例, 更新的链接(AS 2014),它似乎指向与Boost Vault答案相同的文件.
0 2023-05-25
编程技术问答社区
如何使用Boost库来改变文件权限?
如何使用boost库更改文件的权限以更改? 我已经看到了一些问题,例如 this 和 this ,但我仍然不知道该怎么做,我尝试做 boost::filesystem::wpath path = L"abc.txt"; if( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) { boost::filesystem::file_status s = boost::filesystem::status( path ); /* here I need to set file permissitons to READ ONLY for `path` file */ } 有什么想法? 解决方案 #include int main() { using namespace boost::files
0 2023-05-25
编程技术问答社区
在Linux系统上,用户可能无法打开一个共享内存对象的原因
我在支持的应用程序上遇到了一些麻烦,出于各种烦人的原因,我支持该应用程序处理某些任务.这些过程传达状态,有时会使用共享内存空间结果.我正在使用Boost Intervocess库来完成此操作(使用sharen_memory_object和mapped_region类型). 在部署到的系统之一上,我们的访问权限极为有限,这使得在该系统上进行调试.有一个整个过程只是为了获得新版本的软件.但是,在这个目标上,我们遇到了一个问题,一个试图启动应用程序的用户可以做到这一点,而另一个用户看似相同的凭据,组隶属关系等,无法创建共享内存对象.提升错误是"拒绝权限".即使名称尚不存在,任何尝试创建共享内存对象的尝试都将返回. 我只能通过将应用程序启动为根来重现此问题,从而使内存空间具有限制的特权,然后作为非Root用户重新运行,这给出了相同的权限问题.我能够通过在权限对象上调用set_unrestrated例程来解决这个问题,如上所述在这里.但是,这不是此远程系统上发生的情况,因为用户都不是r
0 2023-05-25
编程技术问答社区
无法通过mongodb.conf改变mongodb的dbpath。
我收到以下消息 initandlisten std :: exception中的例外:boost :: filesystem ::存在:否认允许拒绝:"/vol/mongodb",终止 in/var/log/mongodb/mongodb.log ls -al/vol/mongodb给出 - drwxrwxrwx 2 mongodb mongodb 4096 2011-08-07 12:10 ./ 当我更改dbpath时,返回默认值,即/var/lib/mongodb-它可以正常工作. 如何解决这个问题? 解决方案 我最初遇到相同的问题,发现它是由mongodb用户在 parent 目录上没有适当权限的用户引起的. 我建议检查/vol,以确保mongodb用户至少可以从该目录中读取文件.也可能还需要执行权限,我怀疑这将为root之前的每个后续直接目录保留. .
0 2023-05-25
编程技术问答社区
如何使用boost库对自定义库进行性能测试
我需要对C ++编写的库进行性能测试.该库由几组结构组成.我已经对这些类进行了序列化测试,但不确定如何为这些测试进行性能测试.以下是库中的结构样本 struct X { public: int p; double q; X(); ~X(); } struct Y { float m; double n; Y(); ~Y(); } struct Z { public: std::map> Xtype; std::map> Ytype; int i; string name; Z(); ~Z(); } 如果提供了任何示例,那真的很好. 解决方案 好吧,所以我在类型中添加了序列化(您为什么遗漏了?) st
4 2023-05-24
编程技术问答社区
用RTrees搜索网格间的交集的复杂性
我有两个网格(来自有限元素,但这与T_1,T_2>无关).一个网格在另一个网络内,例如另一个网格,例如另一个正方形.对于每个网格,我都构建了一个带有边界框的rtree,例如RTree1和RTree2.要找到所有一对相交矩形,我做以下 for (const auto &[box2, cell2] : RTree_2) { for (const auto &[box1, cell1] : RTree1 | bgi::adaptors::queried(bgi::intersects(box2))) { do_something_with_cells(cell1,cell2); } } } 假设我有第一棵树的N边界框,第二棵树的边界框.我想确定上面的摘要的复杂性. 由于相交的复杂性为O(log(N))(平均而言),因此我认为上面的摘要具有O(N M
0 2023-05-24
编程技术问答社区
在Boost.Pool分配器中使用向量<wstring>。
我尝试使用 boost.pool分配器 vector,期望与通常分配的vector相比,某种形式的性能提高(我期望某种快速的结果,例如但是,似乎有了boost.pool,我实际上会得到 结果,例如: 对于15,000迭代的计数,0 ms通常用于vector,而是使用boost.pool的经过的时间为5900 ms; 对于5,000,000迭代的计数,用默认的分配器完成循环大约需要1300毫秒,而使用boost::pool_allocator则需要大量时间(一分钟后,我用 ctrl + c ). 这是我写的C ++代码基准: ////////////////////////////////////////////////////////////////////////// // TestBoostPool.cpp // Testing vector with Boost.Pool ///////
0 2023-05-24
编程技术问答社区
传递回调成员函数的高效方法
我正在为输入处理程序类设计一种方法.这是一些伪代码... void InputHandler::ScanEvents( boost::function1 &func ) { // Scan keys, determining string to pass // If string found, call func with string as its argument on object tied to func } 我不确定如何实现它,或者是否可能实现,因为函数的全部要点是将其与呼叫者分开.这个想法是一个对象具有私有成员函数和boost ::持有它的函数成员.每当它在其inputhandler上称为scanevents时,它都会通过该功能,因此每当找到适当的事件时,ScaneVents都可以"激活它". 效率是一个问题,因为这在性能很重要的领域中,并且此功能经常被调用. P.S.我发誓我记得在斯科特·迈耶
0 2023-05-23
编程技术问答社区
为什么std::make_shared<>()的性能比boost::make_shared()好很多?
我一直在对 进行一些现场性能测试 1>std::shared_ptr, std::make_shared based on 'gcc 4.7.2' & 'VC10 implementation' 2>boost::shared_ptr, boost::make_shared based on boost 1.47 测试结果有些有趣. 1>一般std版本的性能更好,尤其是std::make_shared.为什么?我可以增加boost版本性能,因为C ++ 11还没有用于某些旧项目,因为他们使用了旧版本的Visual Studio? 下面是用于测试这些代码的代码段. NB.您需要在Boost&STD之间手动切换. NB. " SimpleMstimer.hpp"是我的计时器包装器,用于Boost Ptime,在此处发布的时间太长了.但是请随意使用自己的计时器.任何便携式时间都可以. #include "stdafx.h" #include #in
2 2023-05-23
编程技术问答社区
用于快速分配std::wstring的自定义分配器
是否有任何开源分配器(可能是在提升中)可以与std::wstring实现 fast 分配模式一样,如 boost.pool 似乎并不适合此目的. 解决方案 不,没有(我搜索了几个小时,一次).如果您不想在使用过程中发布内存,那么自己做的很简单.如果您想动态发布它,那么它将成为有关免费列表管理,LRU等的大量工作.
0 2023-05-23
编程技术问答社区
提升IO流和ZLib的速度
我使用Boost iostreams和过滤流缓冲区的Zlib压缩了大量数据文件: boost::iostreams::array_source uncompressedArray( reinterpret_cast( &uncompressedData[0] ), uncompressedData.size() ); boost::iostreams::filtering_streambuf out; out.push( *m_compressor ); out.push( boost::iostreams::char_back_inserter( compressedData ) ); boost::iostreams::copy( uncompressedArray, out ); 为了速度,我正在使用以下来初始化Zlib库: boost::iostreams::zlib_para
4 2023-05-23
编程技术问答社区
气象符号的性能缓慢?
我想提出一个刚刚送我一个兔子洞的主题,并提出了一个问题 qi ::符号. 当我查看新的野兽图书馆并阅读 a 教程示例 它以一个从HTTP路径猜测MIME类型的函数开始 扩展.我开始更仔细地看着: auto const ext = [&path] { auto const pos = path.rfind("."); if(pos == boost::beast::string_view::npos) return boost::beast::string_view{}; return path.substr(pos); }(); 我花了一段时间才弄清楚这是 iife 在C ++样式中,并在声明不变时用于初始化ext. 无论如何,我开始测试是否有任何性能差异 将证明可怕的可读性与直接实现合理. 这样做,我开始想知道这不会更好地实现 qi ::符号.因此,我提出了两个替
0 2023-05-23
编程技术问答社区
提升IO流和ZLib的速度
我使用Boost iostreams和过滤流缓冲区的Zlib压缩了大量数据文件: boost::iostreams::array_source uncompressedArray( reinterpret_cast( &uncompressedData[0] ), uncompressedData.size() ); boost::iostreams::filtering_streambuf out; out.push( *m_compressor ); out.push( boost::iostreams::char_back_inserter( compressedData ) ); boost::iostreams::copy( uncompressedArray, out ); 为了速度,我正在使用以下来初始化Zlib库: boost::iostreams::zlib_para
2 2023-05-23
编程技术问答社区
C ++ 提升绑定性能
绑定函数(使用Boost Bind)时是否会产生任何性能影响(正面或负面)? 解决方案 也许不是.这取决于 std::bind(或boost::bind)的结果是所谓的"绑定表达式",它具有由实现确定的不可知类型.这种类型是可召唤,它是可转换到std::function的实例(或boost::function). 内部,function(可能)使用类型擦除来处理各种复杂,状态的"可呼叫对象".这需要在某些情况(尽管不一定全部)情况下进行动态分配和虚拟调度. bind和function都陈述了,因为它们存储了绑定的参数. 结果是,如果可能的话,您应该避免将绑定表达式转换为function对象.绑定表达式本身可能会更便宜,并且您不应该害怕使用bind(例如,在将成员函数指针与实例和参数结合时).自由使用bind,但仅当您真正需要管理可呼叫实体的异质集合时才转换为function. 这是两个典型示例: 坏;避免这样做: std::function
2 2023-05-23
编程技术问答社区
C ++ 提升绑定性能
绑定函数(使用Boost Bind)时是否会产生任何性能影响(正面或负面)? 解决方案 也许不是.这取决于 std::bind(或boost::bind)的结果是所谓的"绑定表达式",它具有由实现确定的不可知类型.这种类型是可召唤,它是可转换到std::function的实例(或boost::function). 内部,function(可能)使用类型擦除来处理各种复杂,状态的"可呼叫对象".这需要在某些情况(尽管不一定全部)情况下进行动态分配和虚拟调度. bind和function都陈述了,因为它们存储了绑定的参数. 结果是,如果可能的话,您应该避免将绑定表达式转换为function对象.绑定表达式本身可能会更便宜,并且您不应该害怕使用bind(例如,在将成员函数指针与实例和参数结合时).自由使用bind,但仅当您真正需要管理可呼叫实体的异质集合时才转换为function. 这是两个典型示例: 坏;避免这样做: std::function
2 2023-05-23
编程技术问答社区
为什么C++比Python用boost快得多?
我的目标是为Python中的光谱有限元素编写一个小库,为此,我尝试使用Boost使用C ++库扩展Python,希望它能使我的代码更快. class Quad { public: Quad(int, int); double integrate(boost::function const&)> const&); double integrate_wrapper(boost::python::object const&); std::vector > nodes; std::vector weights; }; ... namespace std { typedef std::vector > > cube;
2 2023-05-23
编程技术问答社区
以最快的方式将数据从一个线程传递给另一个线程
我正在使用boost spsc_queue将我的东西从一个线程移到另一个线程.这是我软件中关键的地方之一,因此我想尽快进行.我写了这个测试程序: #include #include #include #include const int N_TESTS = 1000; int results[N_TESTS]; boost::lockfree::spsc_queue> testQueue; using std::chrono::nanoseconds; using std::chrono::duration_cast; int totalQueueNano(0); int totalQueueCount(0); void Consumer()
0 2023-05-23
编程技术问答社区
随机数,C++11与Boost
我想在C ++中生成伪随机数,而两个可能的选项是C ++ 11和Boost对应物的功能.它们的使用方式基本相同,但是我的测试中的本地速度大约慢4倍. 是由于库中的设计选择,还是我错过了某种方式禁用调试代码的方式? 更新:代码在这里,cerr dist(.5); boost::mt19937 boostengine; for (int i=0; i
0 2023-05-23
编程技术问答社区
升压.ASIO性能差
我在Windows上使用Boost :: ASIO有一个非常简单的服务器/客户端性能测试,并且似乎的性能非常不佳.我希望我只是不正确地使用图书馆,并感谢任何建议. 我有一个会话课,写一个消息长度然后写一条消息,然后等待阅读消息长度,然后读取消息,然后一遍又一遍地不停地进行此操作.但是,当我在自己的计算机上本地运行它时,我的性能非常快.当我在一台计算机上运行服务器和另一台计算机上的客户端,即使在同一网络上,性能也会减慢,用于读取/写入操作多达1秒钟. 服务器源代码文件如下: #include #include #include #include using namespace boost; using namespace boost::asio; using namespace boost::asio::ip; using namespace std; cla
4 2023-05-23
编程技术问答社区