Вот еще один ответ, с некоторым сравнением IL. Рассмотрим класс:
public class MyClass
{
public static void Main()
{
// Call the 2 methods
}
public void DirectCast(Object obj)
{
if ( obj is MyClass)
{
MyClass myclass = (MyClass) obj;
Console.WriteLine(obj);
}
}
public void UsesAs(object obj)
{
MyClass myclass = obj as MyClass;
if (myclass != null)
{
Console.WriteLine(obj);
}
}
}
Теперь посмотрим на IL, который создает каждый метод. Даже если операционные коды ничего не значат для вас, вы можете увидеть одно существенное отличие - вызывается isinst, за которым следует castclass в методе DirectCast. Так что два звонка вместо одного в принципе.
.method public hidebysig instance void DirectCast(object obj) cil managed
{
// Code size 22 (0x16)
.maxstack 8
IL_0000: ldarg.1
IL_0001: isinst MyClass
IL_0006: brfalse.s IL_0015
IL_0008: ldarg.1
IL_0009: castclass MyClass
IL_000e: pop
IL_000f: ldarg.1
IL_0010: call void [mscorlib]System.Console::WriteLine(object)
IL_0015: ret
} // end of method MyClass::DirectCast
.method public hidebysig instance void UsesAs(object obj) cil managed
{
// Code size 17 (0x11)
.maxstack 1
.locals init (class MyClass V_0)
IL_0000: ldarg.1
IL_0001: isinst MyClass
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: brfalse.s IL_0010
IL_000a: ldarg.1
IL_000b: call void [mscorlib]System.Console::WriteLine(object)
IL_0010: ret
} // end of method MyClass::UsesAs
Ключевое слово isinst по сравнению с каст-классом
В этом блоге есть достойное сравнение между двумя способами. Его резюме таково:
Я лично всегда использую как потому что он легко читается и рекомендуется командой разработчиков .NET (или Джеффри Рихтером в любом случае)
Zend_Search_Lucene
- это чистая PHP-реализация формата Apache Lucene. В настоящее время (начиная с ZF 1.6) поддерживаемые версии формата индекса Lucene: 1.4 - 2.3. Для получения дополнительной информации о Lucene посетите http://lucene.apache.org/java/docs/ .
Что касается ограничений на размер индекса, размер индекса ограничен 2 ГБ для 32-разрядных версий. битовые платформы и, насколько мне известно, не ограничиваются 64-битными платформами.
Производительность в значительной степени зависит от того, как вы строите свои индексы. Обязательно ознакомьтесь с разделом руководства , который касается производительности .
Кроме того, Luce (инструмент диагностики индексов Lucene) очень полезен при оптимизации производительности и устранении неполадок.
PS Что касается обновления, формат файла индекса Lucene не поддерживает обновление документов. Документы следует удалить и снова добавить в индекс, чтобы эффективно их обновлять. Это верно и для реализации Java.