Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;多播数据馈送过滤器_C++_Multicast - Fatal编程技术网

C++ C++;多播数据馈送过滤器

C++ C++;多播数据馈送过滤器,c++,multicast,C++,Multicast,我不熟悉多播数据馈送处理,我的问题是,在数据流上创建简单过滤器的最佳方法是什么 我正在编写一个应用程序来处理流式金融数据,例如,在纽约证券交易所交易的所有股票的股价。数据流看起来像这样 SJYM2 Quote: Bid=91.265000, 4 Ask=91.330000, 4 6SM2 Quote: Bid=1.105500, 23 Ask=1.105800, 5 RFM2 Quote: Bid=1.204500, 6 Ask=1.205000, 7 6SM2 Quote: Bid=1.105

我不熟悉多播数据馈送处理,我的问题是,在数据流上创建简单过滤器的最佳方法是什么

我正在编写一个应用程序来处理流式金融数据,例如,在纽约证券交易所交易的所有股票的股价。数据流看起来像这样

SJYM2 Quote: Bid=91.265000, 4 Ask=91.330000, 4
6SM2 Quote: Bid=1.105500, 23 Ask=1.105800, 5
RFM2 Quote: Bid=1.204500, 6 Ask=1.205000, 7
6SM2 Quote: Bid=1.105500, 24 Ask=1.105800, 5
6SM2 Quote: Bid=1.105500, 25 Ask=1.105800, 5
6SM2 Quote: Bid=1.105500, 26 Ask=1.105800, 5
6SM2 Quote: Bid=1.105500, 27 Ask=1.105800, 5
6SM2 Quote: Bid=1.105500, 28 Ask=1.105800, 5
GEH3-GEZ3 Quote: Bid=23.500000, 325 Ask=24.500000, 1501
GE:BF_M2-H3-Z3 Quote: Bid=-15.500000, 936 Ask=-14.000000, 16
GEM3-GEU3 Quote: Bid=7.500000, 21823 Ask=8.000000, 79
GE:DF_H3H4H5H6 Quote: Bid=-21.000000, 6 Ask=-19.000000, 4
NGG3-NGQ3 Quote: Bid=-0.162000, 2 Ask=-0.081000, 1
NGH3-NGU3 Quote: Bid=-0.185000, 3 Ask=-0.102000, 1
BZK2 Quote: Bid=123.970000, 1 Ask=124.120000, 1
BZ:C1_HO-BZ_K2 Quote: Bid=11.100000, 1 Ask=11.320000, 1
BZ:C1_RB-BZ_K2 Quote: Bid=17.060000, 1 Ask=17.310000, 1
BZM2 Quote: Bid=123.250000, 1 Ask=123.460000, 1
BZN2 Quote: Bid=122.530000, 1 Ask=122.920000, 1
CLK2-BZK2 Quote: Bid=-18.770000, 1 Ask=-18.610000, 1
BZK2 Quote: Bid=123.970000, 1 Ask=124.110000, 5
BZ:C1_HO-BZ_K2 Quote: Bid=11.110000, 1 Ask=11.320000, 1
BZ:C1_RB-BZ_K2 Quote: Bid=17.070000, 2 Ask=17.310000, 1
BZM2 Quote: Bid=123.250000, 1 Ask=123.450000, 5
BZN2 Quote: Bid=122.530000, 1 Ask=122.910000, 1
如果我只对BZN2BZK26SM2数据感兴趣,那么创建只提取这些数据的简单过滤器的最佳方法是什么


谢谢。

由于标记始终位于字符串的第一位,因此您可以按空格分割每个传入字符串,获取第一个子字符串,并使用
strcmp()
将其与一组模式进行比较。 您也可以在这里使用regexp,但它不是必需的


最好的解决方案(我不知道在您的情况下是否可能)是从服务器端筛选传入流,即在注册流时选择所需的标记

我曾考虑过使用strcmp(),但问题是我可能需要提取20种不同股票的数据,因此对于每一条新消息,我可能必须通过20个strcmp(),是否有更快的方法来解决此问题?如果此前端问题对您的表现至关重要,最好的方法是用词法分析器替换strcmp | | | | | strcmp | | | |。有一个可能的解决方法-您可以收集最常见标记的统计信息并首先进行比较。请提供一个替代strcmp | | | strcmp | | | strcmp |的示例。。。用词法分析器?我正在考虑将20个符号放入std::map,然后调用map.find()方法。谢谢。如果你不进行深入的绩效研究,我认为没有必要。当您编写strcmp时,获取分析数据,重新组织strcmp,前端仍然存在瓶颈-您应该使用LA来完成此任务。但是这种情况不会发生:)20
strcmp()
运行时间不会太长,但是如果分析表明这是一个性能瓶颈,请查看
regcomp()
regexec()
。另外,
manflex
获取词法分析器的信息。