Используйте BitConverter, если Вы хотите избежать небезопасного кода.
float InvSqrt(float x)
{
float xhalf = 0.5f * x;
int i = BitConverter.ToInt32(BitConverter.GetBytes(x), 0);
i = 0x5f3759df - (i >> 1);
x = BitConverter.ToSingle(BitConverter.GetBytes(i), 0);
x = x * (1.5f - xhalf * x * x);
return x;
}
Иначе, код C# является точно тем же как кодом C, который Вы дали, за исключением того, что метод должен быть отмечен как небезопасный:
unsafe float InvSqrt(float x) { ... }
APC использует разделяемую память для хранения своего кэша кодов операций. В случае mod_php эта память распределяется между всеми процессами Apache. Таким образом, кэш размером 30 МБ занимает всего 30 МБ, даже если существует 5 процессов Apache.
Однако при использовании mod_php каждый процесс Apache тратит много ресурсов, поскольку каждый процесс содержит интерпретатор PHP. Таким образом, когда Apache обслуживает статический контент (html, css, js, файлы изображений и т. Д.), Он использует процесс с загруженным полным интерпретатором PHP. Чтобы обойти это, некоторые люди используют FastCGI через mod_fastcgi или mod_fcgi. Использование кэша кодов операций с FastCGI становится немного сложнее.
В настоящее время нет способа использовать кэш памяти в качестве кеша кодов операций. Даже если бы было,
Помимо кеширования кодов операций, APC также предоставляет разделяемую память. Это убедительно свидетельствует о том, что у него есть собственная внутренняя система разделяемой памяти, аналогичная memcached.