GUID будет чрезвычайно быстрым, , поскольку его реализация гарантирует, что Windows может сгенерировать не менее 16 384 GUID за 100 наносекунд . (Как отмечали другие, спецификация не гарантирует, а только допускает. Однако создание GUID действительно, очень быстрое. Действительно.) Вероятность коллизии в любой файловой системе в любом месте любой сети очень мала. Это достаточно безопасно, хотя было бы лучше всегда проверять, доступно ли это имя файла в любом случае, на самом деле вам даже не нужно этого делать.
Итак, вы не рассматриваете никаких операций ввода-вывода, кроме сохранить себя и <0. 2 миллисекунды (на тестовой машине) для генерации самого имени. Довольно быстро.
Если вы управляете местом назначения, в котором будут расположены файлы, и есть только один процесс и поток, которые записывают в него, просто добавьте некоторое автоматически увеличивающееся число к базовому имени.
Если вы не контролируете место назначения или вам нужна многопоточная реализация, используйте GUID.
Вы хотите System.IO.Path.GetTempFileName ()
Я не могу сказать, самый быстрый или нет, но это правильный способ сделать это, что более важно.