基於部分匹配過濾列表的最快方法。<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;
回复:根據部分匹配過濾列表的最快方法。如果我從列公式中刪除小寫函數,而是發送小寫列表並將值設置為小寫,我會得到輕微的改進。否則這看起來相當快。
回复:根據部分匹配過濾列表的最快方法。太快了! 循環或正則表達式方法甚至無法接近(我嘗試過但失敗了......)。