这可能听起来像一个奇怪的问题,但
我在C#中使用GDI +编写了一种图形计算器。我对结果及其“通常”表现感到满意。
唯一的问题是,如果函数没有完全定义,渲染方法将会出现巨大的性能问题,这是由于我的渲染循环中存在try..catch
块:
private void draw(....,Graphics g)
{
// this is e.g. the function ƒ(x) := x⁻¹
Func<double, double> mathematical_method = .....;
...
// The variables `left` and `right` are the visible pixels translated
// into function coordinates, so that we only draw the pixels we really need
for (double x = left; x < right; x += step)
try
{
// Draws the lines of the graph at their respected points
g.Draw( ...... x, mathematical_method(x));
}
catch
{
// in case of a non-definition
g.Draw( ..whatever.. )
}
...
}
正如您可能已经猜到的那样 - 这不是最好的解决方案,所以我想知道,是否有可能使这个try..catch
- 阻止更高性能(例如通过某种方式禁用CLR的方法,这是负责堆栈跟踪收集等。)或如何以其他方式解决此问题....
if...else
不是真是一个选择...
我的随机想法:我可以以某种方式实现function cache
在第一次绘图迭代中使用try..catch
然后'学习',其中函数f未定义。
ƒ : ℝ\{0}⟶ℝ : x⟼x⁻¹
没有为x值0
定义