Назад к задачам
КасперскийПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
30
Оптимизируй производительность кода
Компании, где спрашивали:
Условие задачи
Требуется устранить узкие места, влияющие на скорость работы программы, при этом менять внутреннюю реализацию логгера нельзя.
type Logger interface {
Log(message string) error
Close() error
}
type FileLogger struct{ file *os.File }
func NewFileLogger(path string) (*FileLogger, error) {
fileHandle, err := os.Create(path)
if err != nil {
return nil, err
}
return &FileLogger{fileHandle}, nil
}
func (fl FileLogger) Log(message string) error {
_, err := fl.file.WriteString(message + "\n")
return err
}
func (fl FileLogger) Close() error {
return fl.file.Close()
}
// ...
type SequentialLogger struct {
inner Logger
}
func NewSequentialLogger(inner Logger) *SequentialLogger {
return &SequentialLogger{inner}
}
func (sl *SequentialLogger) Log(message string) error {
// TODO: добавить реализацию, сохраняющую порядок записи и не ухудшающую производительность
}