00:00
好,同学们,这一节开始呢,我们给大家讲一下我们文档中说的这个set和map的意思啊,这个这个两个操作的性能差异啊,这里呢,我们首先把这个温度函数呢给它去掉。啊,我们先写一个map版的,嗯,注意呢,这个文档里面说到场景啊,是在你要设置一个静态常量的时候呢,尽量使用set,而不是map,但是呢,很多时候我们的需求呢,必须要用map来写。所以说这个尽可能使用set,不是map呢,它有它成立的前提条件,好这里呢,我们首先把这个代码改一下,我们呢给每一行加上一个数据,比如说我们给每一行去一个function,然后传递一个匿名函数。呃,那么这里呢,我们直接传递一个返回一个record,然后二位给它加上一个字段。呃,那么这个字段呢,就是hello he,冒号word,注意这个word呢,要写字符串啊W。
01:08
好,那么接下来呢,我们看一下这里就要说报错啊,那么这里报错呢,是说我没有明确的去写这个返回值,呃,是因为它把我外面这个花括号呢,呃,识别成了一个代码块,那么我们知道呢,在这个flux语言里面呢,一个record的声明呢,也是要用这个画括号的,那么此处呢,我们可以用小括号给它括一下,呃,表示呢,这是一个返回值。好,那么接下来呢,我们直接上提交这个查询,然后最后翻到最后一页。来看我们的一个性能的分析。好可以看到啊这里面,呃,我们现在呢,有这个总的执行时间,然后操作呢,一共是分两步啊,从这个from到filter呢是一步,完了之后呢,Map呢是独自一步。啊,接下来呢,我们去看一下这个执行的持续时间。还有,把他劝下来。啊,然后先把这个图呢隐藏下来,我们把这个map操作呢,换成set操作,再看一下这个性能的结果set,然后这里面呢,有一个指定一个K,我们K呢就是海,那么结果呢,Value就是word。
02:20
好,接下来呢,我们sum可以可以看到这里面每呃,我可以看到我这个操作完之后呢,返回的数据里面有一个字段,字段名字叫做海漏完了值呢就是word。翻到最后一页,我们再来看他的这个执行的情况。好,截图做下比较。啊,注意啊,这个上面的这个一四开头的是我们的,呃,Map的操作,底下这个set操作呢,是我们啊六二开头的,这个是我们set操作,大家去看一下这个时间的差距。首先看我们这个map操作的叫148。74715。可以看到呢,这个操作下来一共是0.014秒左右,呃,接下来我们换成这个我们现在的赛操作。
03:06
621稍等啊621。5062哎,可以看到呢,是0.0621操作啊之间呢,差基本上两倍的一个性能差距。啊,0.014和0.06,呃,那么我们比较这两个操作呢,其实除了比较这个总的执行时间之外呢,呃,我们还需要注意一个点,就是我们这里的。呃,这里的一个读写操作。呃,可以看到我们第二次读呢,通常来说会比第一次读呢要稍微快一些。啊,可以看到第一次读呢是七七,第二次读呢是五二啊,他们俩之间呢,差不多是差了0.02秒,除此之外呢,很大的一个,这个时间差异的贡献就在这里,一个是131794,这是一个六位数啊,上面的是7407181是一个七位数,所以说上面这个map操作呢,其实是底下这个set操作的一个倍数关系,呃,这两个,这两个算子啊,这两个操作的一个性能差距的体现主要是在于,呃,我们的map操作呢,它是对每一行数据。
04:13
哎,Map是对每一行数据进行一个便利操作,而我们的这个set操作呢,是对我们最后的返回集,对最后对最后的数据集进行操作,呃,所以说呢,这个set呢,是按照这个列直接走的,这个map呢,就要按行逐行遍历,这就是他们这个性能差距差呃,差距的地方,呃,那么需要注意的是我们现在啊,这个所说的这种差异。哎,某个函数之间的差异呢,其实要取决于我们的文档,就是文档里面,他说这里面怎么样,我们才可以去做一个判断,不排除以后的优化器呢,会把这个操作呢,呃,给他搞成一样的,呃可以看到呢,这里面就是他说的是避免使用纯重功能啊,那么我们刚才这个map和set呢,其实是对map的一个演示,呃,总的来说呢,我们的整个flax优化呢,就是这些内容,呃,大家呢,主要是掌握分析这个flax性能的方法,就使用这个profile去分析它的方法,好那么我们这个优化呢,就讲到这里。
我来说两句