আপডেট: এই প্রশ্নটি ফার্সির ২.x বোঝায়। নতুন 3.x এটি করতে পারে বলে মনে হচ্ছে না।
আমি এই মুহুর্তে ফার্সিয়ার ফিজিক্স ইঞ্জিনটি বেশ বিস্তৃতভাবে ব্যবহার করছি, এবং আমি লক্ষ্য করেছি যে এটি ক্লাসের সদস্য হিসাবে অস্থায়ী মান ধরণের অনেকগুলি সঞ্চয় করবে বলে মনে হচ্ছে , এবং স্ট্যাকের উপর যেমন কেউ আশা করতে পারে তেমন নয়।
এখানে Body
ক্লাসের একটি উদাহরণ রয়েছে :
private Vector2 _worldPositionTemp = Vector2.Zero;
private Matrix _bodyMatrixTemp = Matrix.Identity;
private Matrix _rotationMatrixTemp = Matrix.Identity;
private Matrix _translationMatrixTemp = Matrix.Identity;
public void GetBodyMatrix(out Matrix bodyMatrix)
{
Matrix.CreateTranslation(position.X, position.Y, 0, out _translationMatrixTemp);
Matrix.CreateRotationZ(rotation, out _rotationMatrixTemp);
Matrix.Multiply(ref _rotationMatrixTemp, ref _translationMatrixTemp, out bodyMatrix);
}
public Vector2 GetWorldPosition(Vector2 localPosition)
{
GetBodyMatrix(out _bodyMatrixTemp);
Vector2.Transform(ref localPosition, ref _bodyMatrixTemp, out _worldPositionTemp);
return _worldPositionTemp;
}
দেখে মনে হচ্ছে এটি বাই-হ্যান্ড পারফরম্যান্স অপটিমাইজেশন। তবে আমি দেখতে পাচ্ছি না এটি কীভাবে সম্ভবত পারফরম্যান্সে সহায়তা করতে পারে? (আমি যদি কিছু মনে করি তবে এটি আরও বড় আকারের জিনিসগুলি তৈরি করে ক্ষতিগ্রস্ত হবে)।
out
প্যারামিটার হিসাবে পাস করবেন )) আমি মোটামুটি নিশ্চিত যে এই নিয়মের পুরো পয়েন্টটি তাই সংকলক সেই মেমরিটি শূন্য করতে এড়াতে পারে - তাই না? ( স্ট্যাক পয়েন্টারটি সরানো কি আসলেই ধীর?)