基于部分匹配过滤列表的最快方法。<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我想看看是否有一种更快的方法来根据部分匹配来过滤列表。请参阅下面的代码。 顺便说一下,这是针对 JMP 12 的,在所有列表改进之前。
名称默认为此处( 1 );
dt =新表( “测试” ,
新专栏( “一些列表” ,设定值( 1 :: 100000 )),
私人的
);
列表=柱子(dt, “一些列表” ) <<数据类型(字符)<<获取值;
关闭(dt,不保存);
按部分匹配过滤=功能({列表,值},
dt =新表( “快点?” ,
新专栏( “有趣的清单” , 字符, 设置值(列表)),
新专栏( “布尔” , 公式(包含(小写(:有趣的列表),小写(价值) )) ),
私人的
);
布尔值=洛克(柱子(dt, “布尔” )<<获取值);
Filtered_list = :funlist[布尔];
关闭(dt,不保存);
过滤列表;
);
开始时间=惠普时间();
过滤列表=过滤器按部分匹配(列表, “2” );
t_时间 =惠普时间() - 开始时间;
展示(t_时间, nitems(filtered_list));
有人知道更好的方法吗?
回复:根据部分匹配过滤列表的最快方法。我相信数据表享有多线程的好处(列公式等)。 因此,如果 JMP 12 中有更快的方法来执行此操作,我会感到惊讶。
回复:根据部分匹配过滤列表的最快方法。是的,将整个列表设为小写肯定会产生开销。您至少可以将值设置为小写。但同样,性能提升并不多。
回复:根据部分匹配过滤列表的最快方法。如何将整个列表变成小写?这样做的成本难道不会超过你从中获得的好处吗?
回复:根据部分匹配过滤列表的最快方法。是的,我喜欢 13 个列表的改进。 但不幸的是,我必须为客户使用12。我喜欢告诉他们去 13,但这可能是徒劳的尝试。
回复:根据部分匹配过滤列表的最快方法。
你在13版本中尝试过吗? 这是我使用私有表方法的结果:
t_时间= 115828;
N 项(filtered_list)= 40951;
以下是使用循环的结果:
t_时间= 61895;
N 项(filtered_list)= 40951;
相比之下,我在版本 12 中得到的分别是:
t_时间 = 127356;
N 项(filtered_list)= 40951;
t_时间 = 161896168;
N 项(filtered_list)= 40951;
回复:根据部分匹配过滤列表的最快方法。如果我从列公式中删除小写函数,而是发送小写列表并将值设置为小写,我会得到轻微的改进。否则这看起来相当快。
回复:根据部分匹配过滤列表的最快方法。太快了! 循环或正则表达式方法甚至无法接近(我尝试过但失败了......)。