所有合適的人,我有輕微的性能瓶頸。規模的Javascript檢查功能性能
基本上我有一個由屏幕div(「屏幕」)和圖表div(「圖表」)組成的圖表,當此圖表完成呈現時,它會按順序查看它需要在圖表上設置的比例讓圖表適合屏幕。問題是無論我提出什麼規模都需要1.2的指數。換句話說,你需要能夠通過採取1.2到一定數量的功率,以便獲得新的數量規模。
這個函數是計算我需要的尺度。
fitScale = function (width, height)
{
var scale = 1,
gWidth = graph.element.offsetWidth,
gHeight = graph.element.offsetHeight;
while (gWidth > width * scale && gHeight > height * scale)
scale *= 1.2;
while (gWidth < width * scale || gHeight < height * scale)
scale /= 1.2;
return 900/scale;
}
的問題是,這很爛......
它在做什麼越來越圖表的大小(width, height
)和屏幕尺寸(gWidth, gHeight
),並通過了新的規模循環,直到它擊中右數。
首先它使比例更大,直到圖表的至少一個維度乘以比例大於屏幕的一個維度。
比它循環回來,以確保圖表*規模的尺寸至少比屏幕小一點。
我想用一個數學計算來執行此操作。也許通過計算緊密貼合,然後向下取整,但我無法弄清楚如何本輪下跌至1.2
-fix-
下面是導致工作版本的指數...
fitScale = function (width, height)
{
var wScale = graph.element.offsetWidth/width,
hScale = graph.element.offsetHeight/height,
snugg = wScale < hScale ? wScale : hScale,
exp = Math.log(snugg)/Math.log(1/1.2),
scale = Math.pow(1/1.2, Math.ceil(exp));
return 900/scale;
}
這就是,上帝爲什麼造數以及布蘭登·艾克取得了'log'功能。 – ultranaut 2013-03-08 02:02:21
是的,但我會如何使用它們? – 2013-03-08 02:04:00
好地獄,這看起來正確的。我知道必須有一種方法。爲什麼更多的人不知道如何做到這一點? – 2013-03-08 02:06:37