所有合适的人,我有轻微的性能瓶颈。规模的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