2017-09-12 5 views
0

D3のパフォーマンスを最適化するために過去数日間苦労しました。 SVGでラインジェネレータを使用していて、xyで使用されている関数を1回だけ計算したいとします。たとえば :d3ラインジェネレータで繰り返しメソッドを使用するとパフォーマンスが向上します

d3.line().curve(d3.curveLinear) 
    .x(function(d){ return Math.sqrt(d) } 
    .y(function(d){ return Math.sqrt(d) + 2) I 

私はMath.sqrt(d)の結果を保存して、唯一の時間を計算したいと思います。

誰にも提案はありますか?

+0

でそれを使うだろうか?単純な数字の配列ですか? –

+0

私はこれの実用的な使い方を理解していません:xとyの両方の座標に対して同じ計算をしているなら、あなたはいつも**左上からSVGのどこかにある。なぜあなたはこれをやっている? –

+0

@TomShanley私はちょうど質問を単純化しました。私が実際に使っているのはリーフレットで、緯度と経度を '' x''と '' y''レイヤーポイントに変換しています。実際の関数は次のとおりです。 'd3.line()。curve(d3.curveLinear).x(function(d){return that.map.latLngToLayerPoint(d.LatLng).x;})。y(function( d){return that.map.latLngToLayerPoint(d.LatLng).y;}); 'それはLatLngの配列です。 –

答えて

0

あなたはあなたの最初の関数に結果を格納し、第二

例えば、あなたのデータから来ている

d3.line().curve(d3.curveLinear) 
    .x(function(d){ 
    d.sqrt = Math.sqrt(d.value); 
    return d.sqrt 
    }) 
    .y(function(d){ 
    return d.sqrt + 2 
    }) 
関連する問題