对demo连续读取,并测试效率

前言

本次最终实现了如下过程:

sources从文件夹中读取wav文件,每次读取一个文件,读到了就解析,得到文件头带的信息和多个通道的信息,返回一个map,map包含文件头带的信息和多个通道的信息。读不到就等3秒
function把map中的一个元素:map(“channel0”)作为输入,即只接收一个通道的信息。进行fft变换后得到一个新的数组。返回
sink每接收到一个流就存储到一个新的文件中。

实现步骤:

  1. 解析wav文件
    ——使用结构一次读取,注意结构中的元素要大写
  2. 修改kuiper_plugin这个项目的mod,使得插件文件能够访问本地的“wav文件解析包”
  3. 依次创建三个go插件。
  4. 依次创建stream,rule.txt,rule,

测试

测试环境

包含36个相同的wav文件,文件大小:2.7M;文件名依次为:2019demo0.wav, 2019demo1.wav, …
文件信息:
在这里插入图片描述

直接查询结果:

在kuiper上直接查询:query

select row2fft(channel0) from streamReadWavA

读取了几个文件以后卡住了,一会后query端口输出:EOF

猜测是query端输出太多了,kuiper自己奔溃了。不过系统内存占用很低。

query端:

在这里插入图片描述

性能:

在这里插入图片描述

通过统计语句查询:

这样query端就不会打印太多消息,可以避免出现上面的错误

query端

在这里插入图片描述

server端

在这里插入图片描述
成功!

速度

36个demo的wav文件,用时42秒,
平均每1.1秒处理一个文件,每个文件从开始到输出大概2s内。

性能:

平时:
在这里插入图片描述

kuiper工作时:
在这里插入图片描述
内存增加了0.1G
主要是cpu占用高。

把结果写入txt

处理逻辑:

sources每读取一个文件,就返回读取到的信息,以及几个通道的信息
function只接收第一个通道的信息,fft,并返回
sink每收到一个流,就写入一个文件。

结果

最终6个wav文件得到了6个txt文件.每个txt大小25M,包含一个数组,内容如下:
在这里插入图片描述

速度

和上面差不多,一秒处理一个文件

性能

开始前后对比:
在这里插入图片描述

内存从2.6变为2.8 。变化不大
Cpu变化明显

错误记录:

这是我编写代码或者操作时犯的错误,稍微记录一下。

function输入是sources的输出

调用function插件时,输入时sources的输出,所以参数名要一致。
比如本文中,sources返回的map中包含4多个键值对:channel0,channel1,channel2, info,分别记录3个通道的内容和文件信息。function的作用是对某个通道的消息进行fft变换,所以调用时:row2fft(channel0)
忘记了。。

未解决的问题

  1. 怎么使用function同时对多个channel进行fft?
    可以实现。
    主要的难点是soueces传回来什么,系统默认传回来一个map,map中的每一个键对应的值都可以作为输入放入function。
    可以channel数量未知,所以不知道要返回多少个channel数组,只能使用1个二维数组存放所有channel,
    所以应该传回来的map中包含这样一个key-value对:channel_all-[][]float,即一个channel_all参数,包含二维数组,二维数组尺寸是通道数。
    但是只传回来一个2维数组还是会丢失文件信息。
  2. 怎么使用function同时接收多个channel和一个info?
    应该可以实现。
    多个channel是[][]float, info可以是字符串或者map,想要同时返回这些,可以使用空接口数组:[]interface{},所以返回的是:
    [channel [][]float , info string]
    function把这个作为输入,读取第一个元素,得到2维数组,读取长度得到通道数。。。。读取第二个元素获得info信息。处理后把处理后的结果重新组合成[channel [][]float , info string],并返回这个数组。
  3. 问题
    上面两种情况,function返回的是2维数组和interface数组,不知道sink能否接收到并输出到文件?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值