1

在这个答案中它提到:

人们还听说 X 使用“网络”并认为这将成为性能瓶颈。这里的“网络”是指本地 UNIX 域套接字,它在现代 Linux 上的开销可以忽略不计。在网络上会成为瓶颈的东西,有 X 扩展来加快速度(共享内存像素图、DRI 等)。进程中的线程不一定比 X 套接字快,因为瓶颈更多地与协调多个线程或进程访问同一硬件的固有问题有关,而不是与本地套接字的最小开销有关。

我不明白。我一直认为多线程通过共享变量进行通信应该比多进程通过 Unix 域套接字进行通信要快。所以……我错了吗?协调多个线程是一项耗时的工作吗?进程如何调度的顺序根本不会影响 Unix 域套接字的性能吗?

任何想法?请...


对不起,我没有把问题说清楚。我想问的是 IPC 效率而不是 X Window/Wayland 系统。

我只想知道为什么UNIX域套接字可以比共享内存快?AFAIK,共享内存是进程和线程之间最原始的通信方式,不是吗?所以 UNIX 域套接字应该建立在共享内存机制之上(伴随着适当的锁定)。为什么一个学生(即 Unix 域套接字)可以胜过他的老师(即共享内存)?

4

1 回答 1

0

对于性能而言,最重要的是最慢的东西(瓶颈)。如果程序的某些部分可以更快,但它不是瓶颈,那么修改程序的那部分对您没有帮助。

这就是为什么提高性能应该始终从分析开始。程序的每一点都可以变得更快,但你需要让瓶颈变得更快,而不仅仅是一些随机的东西。

使用 X,人们通常会很容易理解,如果在单个进程中,通过套接字的某些东西总是会稍微快一些。这是真的,但这并不一定对整体性能很重要。更重要的是系统的整体设计……这就是 Wayland 试图解决的问题。

于 2013-08-08T17:59:58.633 回答