לדלג לתוכן

תרגול העתקות והקצאות

בנו טיפוס struct בשם Packet שמכיל שדה int ושדה byte[]. צרו ממנו עותק, שנו את המספר בעותק ושנו את האיבר הראשון במערך. כתבו את הפלט הצפוי לפני ההרצה והסבירו איזה שינוי משותף ולמה.

כתבו שתי פונקציות שממלאות רשימה ב־100,000 ערכי Packet קטנים, אחת עם List ואחת עם List. מדדו allocation על ה־thread הנוכחי אחרי חימום, תוך הקצאת מערך משותף אחד מחוץ למדידה. מנעו את הגדלת הרשימה באמצעות capacity מתאים. שמרו את הרשימות בחיים עד סוף המדידה.

הוסיפו לפרויקט שדה string? והפעילו Nullable. הסבירו מדוע סימון nullability אינו מחליף את בדיקת IsValueType ואינו משנה את שיטת אחסון ה־reference. הגישו את שתי תוצאות המדידה בלי לטעון שהפרש byte-ים זהה בכל runtime וארכיטקטורה.