我遇到了XCreateGC函數性能問題。看起來在幾種情況下工作正常(快速),在其他情況下非常緩慢:)。欲瞭解更多詳情,請看下面的代碼:XCreateGC函數性能
void some_function(int dx, int dy, int sx, int sy, int w, int h,
Drawable src, Drawable mask, Drawable dest)
{
Display *dpy = QX11Info::display();
GC gc = XCreateGC(dpy, src, 0, 0);
XSetClipOrigin(dpy, gc, dx - sx, dy - sy);
XSetClipMask(dpy, gc, mask);
XCopyArea(dpy, src, dest, gc, sx, sy, w, h, dx, dy);
XFreeGC(dpy, gc);
}
在此先感謝。
您應該考慮到X11是客戶端/服務器體系結構,並且請求被緩衝。也許在某些情況下,'XCreateGC'調用會觸發刷新請求隊列。嘗試在同步模式下運行你的程序,看看它是否仍然很慢(整個應用程序會很慢,有點你只需要測量這個特定的'XCreateGC')。 –
你能向我們展示一個緩慢的功能和一個快速的功能嗎?我們只能推測可能的差異。 ...還有,有什麼辦法來緩存你的GC?或者每次都完全不同?例如。調用some_function兩次不需要*放棄GC並分配另一個,除非你的代碼強加這個需求。 –