Вы хотите использовать «noindex, follow» в метатеге роботов , а не robots.txt
, потому что это позволит пропускать сок ссылок. Это лучше с точки зрения SEO.
Я сейчас на работе, поэтому я смотрю на немного более новые биты, чем Beta1, но на моем ящике в режиме выпуска, а затем просматривая скомпилированный код с помощью .Net Reflector, кажется, что эти два
let rec startFromA x =
seq {
yield x
yield! startFromA (x + 1)
}
let startFromB x =
let z = ref x
seq {
while true do
yield !z
incr z
}
генерируют почти идентичный код MSIL при компиляции в режиме Release. И они работают примерно с той же скоростью, что и этот код C #:
public class CSharpExample
{
public static IEnumerable<int> StartFrom(int x)
{
while (true)
{
yield return x;
x++;
}
}
}
(например, я запустил все три версии на своем компьютере и распечатал миллионный результат, и каждая версия заняла около 1,3 с, +/- 1 с). (Я не занимался профилированием памяти; возможно, я упустил что-то важное.)
Короче говоря, я бы не стал слишком много думать о подобных проблемах, если вы не измеряете и не видите проблему.
EDIT
] Я понимаю, что на самом деле не ответил на вопрос ... Думаю, короткий ответ - «нет, утечки нет». (Есть особый смысл, в котором все
Приложения .NET не "утекают" память таким образом. Даже если вы создаете много объектов, сборка мусора освободит все объекты, не имеющие корней в самом приложении.
Утечки памяти в .NET обычно проявляются в виде неуправляемых ресурсов, которые вы используете в своем приложении (соединения с базой данных, потоки памяти и т. д.). Подобные случаи, когда вы создаете несколько объектов, а затем отказываетесь от них, не считаются утечкой памяти, поскольку сборщик мусора может освободить память.
Никакой утечки памяти не будет, она просто сгенерирует бесконечную последовательность, но, поскольку последовательности являются IEnumerable, вы можете перечислить их без проблем с памятью. Тот факт, что рекурсия происходит внутри функции генерации последовательности, не влияет на безопасность рекурсии. Только учтите, что в режиме отладки оптимизацию хвостового вызова можно отключить, чтобы разрешить полную отладку, но в выпуске не будет никаких проблем.