- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个包含许多 DIB 位图(由 CreateDIBSection
创建)并且必须使用 Win API 在其上绘制大量文本的程序。
为了绘制位图,Windows 需要设备上下文,由 CreateCompatibleDC
创建。
现在有两种方法:
我可以为每个位图创建一次 DC,将其用于绘图并在释放位图时将其删除。
或者我可以只在需要绘制到位图时创建 DC,调用绘制函数并删除 DC。
什么是更好的方法?我更喜欢第一个,因为调用次数较少 - 这将使我的代码更小,速度也更快。
但是为每个位图保留一个长期存在的 DC 是不是太昂贵了?
Edit1:该应用程序实际上是一个 GUI 工具包库,可以在未来以不同且不可预测的方式使用,因此我需要一个平衡的决策,尽可能提高性能和减少系统资源使用。
最佳答案
GDI objects每个进程和每个 session 都是有限的。您正在与同一 session 中运行的所有其他进程竞争资源。考虑到这一点,您应该仅在需要时使用 GDI 资源(问题中的选项 2)。
Mark Russinovich 的博客条目 Pushing the Limits of Windows: USER and GDI Objects – Part 2进入相当多的细节。总而言之,这里是窗口管理器对 GDI 资源的限制列表:
关于c++ - Win API 中的内存 DC 有多便宜/多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33472482/
我正在对 pandas DataFrame 创建进行基准测试,发现它比创建 numpy ndarray 更昂贵。 基准代码 from timeit import Timer setup = """ i
我是一名优秀的程序员,十分优秀!