簡體   English   中英

如何使用多項式代替位來提高性能?

[英]How to use polynomials instead of bits to improve the performance?

我有一個128位的字符串,我的主管要求我將這些128位表示為多項式。 這是他所寫論文的掃描:

將位轉換為多項式

他的想法是,由於我們從這些位中消除了0,因此與執行所有位相比,我們將能夠以更快的速度執行下一個運算(其中大多數是位/多項式之間的XOR)。

我了解要求是什么,我可以在紙上以及在應用程序中做到。 但是我的方法無法實現他的目標,那就是提高性能。 他實際上說已經有圖書館這樣做,但是不幸的是我找不到任何圖書館。 我發現的唯一東西是評估多項式的​​多項式類,這不是我想要的。

那么,你們知道我該如何實施以提高性能? 非常感謝任何代碼/代碼片段/文章。

該應用程序用Java編寫,如果有任何不同的話。

謝謝,

莫塔

更新:

我的主管說,這個C庫將完成任務。 我雖然無法弄清楚它是如何工作的以及它將如何做到這一點。

您的主管熟悉BitSet嗎? 128位是16個字節,可以存儲為2個longs 但是,使用BitSet無需擔心處理2個longs的組合。 BitSet還提供了用於所有常見位操作的方法。 我認為您很難找到比這更好的解決方案。

多項式方法是一個很酷的主意,但我認為它比理論上更實用。

他的建議的是一個Monomial ,你可以撰寫成Polynomial -想Composite模式。 定義所有常規的數學運算(加法,減法,乘法,除法)以及您認為可能需要的其他所有數學運算(例如微分和積分)。

對於x^1000 + 1類的情況,多項式確實會發光,因為您只需兩個項即可捕獲它。

真正的問題是:您的老板認為您要儲蓄什么? 幾位? 速度? 開發時間? 我同意ziesemer-您將很難做到比BitSet更好。 他/她所想到的節省對我來說似乎是微優化,如果您對應用程序進行了概要分析,則不會出現這種情況。

但是他/她老板...值得爭論嗎?

也許您可以將這個細節抽象化並剖析兩者。

如果您有多個需要XOR的字符串,則實際上會導致性能開銷。 這是因為您需要匹配權重。

這完全取決於您對其進行異或操作,以及您必須執行多少次才能計算出采用此方法的優勢。

我會選擇ziesemer的解決方案。

我非常懷疑您會在128位字符串上獲得任何好處。 128位為16字節; 任何對象至少要占用40個對象,因此(幾乎)任何支持結構都將比其存儲的數據昂貴。

盡管如此,這里還是對現有方法的一個很好的綜述 ,以及一種可能會(或可能不會)對您有益的新穎方法。 並不是說這是對您問題的答案,並且同意ziesemer的解決方案對於如此眾多的用戶來說是最好的,但是如果您想開闊眼界,請看一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM