Я в настоящее время занимаю меня с реализацией быстрого интерфейса для существующей технологии, которая позволила бы код, подобный следующему отрывку:
using (var directory = Open.Directory(@"path\to\some\directory"))
{
using (var file = Open.File("foobar.html").In(directory))
{
// ...
}
}
Для реализации таких конструкций классы необходимы, которые накапливают аргументы и передают их на другие объекты. Например, для реализации Open.File(...).In(...)
создайте, Вам были бы нужны два класса:
// handles 'Open.XXX':
public static class OpenPhrase
{
// handles 'Open.File(XXX)':
public static OpenFilePhrase File(string filename)
{
return new OpenFilePhrase(filename);
}
// handles 'Open.Directory(XXX)':
public static DirectoryObject Directory(string path)
{
// ...
}
}
// handles 'Open.File(XXX).XXX':
public class OpenFilePhrase
{
internal OpenFilePhrase(string filename)
{
_filename = filename
}
// handles 'Open.File(XXX).In(XXX):
public FileObject In(DirectoryObject directory)
{
// ...
}
private readonly string _filename;
}
Таким образом, чем больше операторов составных частей, таких как начальные примеры имеет, тем больше объектов должно быть создано для передачи аргументов последующим объектам в цепочке, пока фактический оператор не может наконец выполниться.
Я интересуюсь некоторыми мнениями: быстрое взаимодействует через интерфейс, который реализован с помощью вышеупомянутой техники, значительно влияют на производительность во время выполнения приложения, которое использует ее? С производительностью во время выполнения я обращаюсь к скорости и к аспектам использования памяти.
Примите во внимание, что потенциально большое количество временных, сохраняющих аргумент объектов должно было бы быть создано только для очень кратких промежутков, которые я принимаю, может оказать определенное давление на сборщик "мусора".
Если Вы думаете, что существует значительное влияние производительности, Вы знаете о лучшем способе реализовать быстрые интерфейсы?
Вообще говоря, объекты с очень малым временем жизни - это именно те объекты, с которыми GC справляется наиболее эффективно, потому что большинство из них будут мертвы в момент при запуске следующей второстепенной коллекции - и в любой достойной реализации GC стоимость второстепенной коллекции пропорциональна общему размеру живых объектов. Таким образом, недолговечные объекты стоят очень мало, и их размещение означает только перемещение указателя вверх, что происходит быстро.
Итак, я бы сказал: вероятно, не будет значительного влияния на производительность.