Где Syscall будет работать быстрее, в процессах в PostgreSQL или в горутинах

«Где Syscall будет работать быстрее, в процессах в PostgreSQL или в горутинах» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Syscall в горутинах будет работать быстрее, чем в процессах PostgreSQL. Горутины легковесны и работают в одном процессе, что минимизирует накладные расходы на переключение контекста. PostgreSQL использует отдельные процессы для каждого соединения, что приводит к большим накладным расходам при системных вызовах.

Пример с горутиной:

go func() {
    _, err := syscall.Write(fd, data)
    if err != nil {
        log.Fatal(err)
    }
}()

PostgreSQL же для каждого соединения создает отдельный процесс с собственным адресным пространством, что делает системные вызовы более дорогими из-за переключения между процессами.