בזמן האחרון - HWzone פורומים
adplus-dvertising
עבור לתוכן
  • צור חשבון

חברים מובילים

  1. ch33

    ch33

    משתמש רשום


    • נקודות

      4

    • מספר הודעות

      382


  2. Moon-Mage

    Moon-Mage

    משתמש רשום


    • נקודות

      2

    • מספר הודעות

      4,186


  3. af db creid

    af db creid

    משתמש רשום


    • נקודות

      2

    • מספר הודעות

      431


  4. etal

    etal

    משתמש רשום


    • נקודות

      2

    • מספר הודעות

      3,466


Popular Content

Showing content with the highest reputation on 03/01/21 בכל האיזורים

  1. @zone glideאני אצא פה קצת nec ואגיד לך משהו ממקום של "ללמד אותך". הבעיה בחוסר החלטיות שלך נובעת מחוסר נסיון בעולם החומרה. תמיד אפשר לחכות ותמיד יש משהו מעבר לפינה. חכה לRTX4080, תקבל לפרצוף הודעה נוספת של nec בינואר 2022 על כך שבעצם ה5080 והמוצר הבא של AMD זה הדבר האמיתי ושם תהיה קפיצה ענקית בביצועים. או שאולי רק תחכה ל3080 עם יותר VRAM כי זה נורא חשוב ובכל זאת אנחנו רוצים להחזיק במחשב שני עשורים שלמים, רק אל תשכח שעד שיהיה כרטיס כזה, כבר ממש מעבר לפינה יהיה בכלל 3080 Ti SuperDuper או כל רפרש מומצא אחר של אנוידיה אז אולי תחכה עוד קצת. אני זוכר אותך עוד לפני שנה שואל על שדרוג המחשב הענתיקה שלך, אני מניח שבזמנו לא שדרגת כי החלטת לחכות לדור הבא, עכשיו אתה שוב שוקל לחכות לדור הבא. קנה מה שאתה צריך ותפסיק לתת לאנשים פה להכניס אותך לחרדות על מה שיגיע עוד שנתיים. לא משנה מה תבחר לקנות ומתי, תוך 6-12 חודשים יבוא משהו שיגרום לרכישה שלך להיראות מצחיקה. אני קניתי 3060 ti וקיבלתי למעשה 2080 super שמישהו אחר לפני אולי כמה חודשים שילם עליו כפול. ושנה הבאה גם הכרטיס שלי יובך בבנצ'מרקים ע"י כרטיס שעולה חצי. זה מה יש, זה עולם החומרה, אם אתה לא מסוגל לקבל את זה אל תקנה טכנולוגיה. אם הגעת עד לפה, זה השנקל שלי לגבי המצב שלך אחת ולתמיד כי באמת בחיים לא ראיתי אדם שמורח רכישה של חומרה כ"כ הרבה, ודואג כ"כ הרבה לגביה.
    2 points
  2. צלם תמונה של החיבורים כבל DVI ל-HDMI הוא בהחלט אפשרות או שאולי החלקים עדיין באחריות זה מחשב די חדש
    1 point
  3. התשובה בתכנות לשאלה "האם אפשר ..." היא (כמעט) תמיד כן. השאלה הנכונה היא באיזו עלות. עכשיו, איזו אנימציה? TabControl הוא פקד מסובך למדי, אבל כפי שאמרתי, זה אפשרי.
    1 point
  4. לפי הנתונים אתה משתמש בכרטיס מסך מובנה, הוא באמת לא מתאים למשחקים בשום צורה. יכול להיות שהעברת את החיבור מכרטיס מסך חיצוני שמותקן לך לחיבור של לוח האם שמשתמש בכרטיס המסך המובנה?
    1 point
  5. כבל שנוגע במאוורר.
    1 point
  6. אני לא אמרתי שזה דבר רע. נתתי לך פרספקטיבה במטרה לעזור כי אני רואה שאתה מופיע בהרבה שרשורים ושואל אנשים שונים שאלות דומות. אם זו התגובה, אז באמת אפסיק לנסות לעזור.
    1 point
  7. היו שתי משימות שבהן כיביתי את הRT(רוב הזמן המשחק רץ על 70+ עם RT וDLSS) כי משהו פשוט לא היה בסדר בהן, במקום לקבל 70~ עם RT קיבלתי 40 בלי RT ועם DLSS. לי לא באמת מפריע פעם ב להכנס להגדרות ולכבות את הRT, אני שמח שזו הגדרה אחת פשוטה במקום להתחיל לנסות להבין מה פוגע בביצועים מבין ה10000 הגדרות שם(שסביר מאד להניח שאם אמצא בדיוק מה גורם לקריסת ביצועים באותם אזורים אכבה אותו, אבל כזאת סבלנות אין לי).
    1 point
  8. אני לא יודע למה בדיוק אתה מצפה, אבל מבנצ'מרקים שראיתי MFS מאוד מאוד כבד ומכניע אפילו את הדור החדש של חומרה. בכל מקרה משהו כזה זה מחשב גיימינג הכי מהיר שאפשר לקבל בתקציב - מעבד: 999 ₪ - SIX Core i5 10600KF 4.1Ghz-4.8Ghz Comet Lake S1200 Tray קירור אוויר למעבד: 139 ₪ - * חדש * - ANTEC C400 Glacial White לוח אם: 384 ₪ - * מבצע * - Gigabyte B460M DS3H זכרון: 281 ₪ - XPG 16G (2X8G) DDR4 3000Mhz CL16 GAMMIX D10 BLACK כרטיס מסך: 2203 ₪ - * בהרכבת מחשב * - GIGABYTE GeForce RTX3060Ti 8G D6 Up To 1665Mhz EAGLE דיסק קשיח: 509 ₪ - WD Blue 1T SN550 NVMe R/W Up To 2400 / 1950MB/s 5 Year Warranty ספק כוח: 399 ₪ - * מבצע * - Antec 650W HCG-650M 80+ GOLD Full Modular High Current Gamer מארז: 367 ₪ - Antec NX800 מחיר סופי: למזומן / העברה בנקאית: 5281 ₪ לאשראי: עד 12 תשלומים 5386 ₪ או עד 36 תשלומים 5492 ₪ מפרט מSTARTPC. אולי להוסיף עוד איזה 250-500 ג'יגה אחסון אם צריך, בכל זאת, MFS... ממה שזכור לי הוא שוקל עולם ומלואו.
    1 point
  9. אשמח אם תוכלו לבדוק את Flight Simulator 2020
    1 point
  10. טוב יאללה. בוא נתחיל מthreads וlock, זה יותר פשוט. threads משמשים בתפקיד מאוד פשוט: הרצת קוד במקביל. ניקח כדוגמה את Word. מעבד התמלילים שומר את המסמך כל עשר דקות (ניתן לקינפוג). עכשיו, נניח שיש לי מסמך ענק, עם המון גרפיקה. כמה ענק? היו לי מצגות בעבר שלקח כמה דקות לשמור. אני ממש לא רוצה שסאמצע שאני עובד, בדיוק אחרי שעלה לי איזה רעיון מדליק (כי בכל זאת, חוק מרפי) הWord יתקע פתאום למשך שתי דקות בניסיון נואש לשמור את המסמך למקרה של הפסקת חשמל או מי יודע מה. אם דבר כזה היה קורה לי... לא הייתי מקנא במתכנתים של Microsoft. בכל מקרה, זו הסיבה שWord מפעיל את השמירה האוטומטית בthread נפרד. ככה אני לא אתקע (ליתר דיוק, לא ארגיש שאני נתקע. עוד על זה בקרוב), אבל המסמך יישמר למקרה שמרפי יחליט להציג את כוחו. עכשיו, יש שתי סיבות להריץ קוד במקביל. למעשה, שלוש, אבל על השלישית אדבר בהמשך. הראשונה היא, אם אני רוצה ששתי פעולות יבוצעו "כאילו במקביל". זו הדוגמה של הWord, ושלא במפתיע, הרבה פעולות שעלולות לתקוע את הUI מבוצעות בthread נפרד. למעשה, כל פעולה שיכולה לקחת יותר מכמה אלפיות השנייה כדאי לבצע בthread נפרד. השנייה היא חישוב מסובך, אלגוריתמית. נגיד שאני צריך לבדוק אם מספר גדול מאוד הוא ראשוני, ואני רוצה לעשות את זה בשיטה הנאיבית של בדיקת כל המספרים עד השורש אם הם מחלקים. למה בשיטה הגרועה הזו? כי אני אוהב לעצבן את הלקוחות שלי. הבעיה היא, שאומנם אני אוהב לעצבן את הלקוחות, אבל לא את הבוס (בכל זאת, הוא יכול לפטר). אז אני מחלק את העבודה: אני אוציא נגיד 4 threads, כל אחד יבדוק רבע אחר של המספרים. האם זה יועיל או אולי יזיק? תלוי, כמובן. התשובה הנצחית. אם יש לך מספיק ליבות במעבד, מערכת ההפעלה תשמח לתת לכל thread ליבה משלו, ואז כמובן הדברים יהיו מהירים יותר. אבל אם לא, מערכת ההפעלה עדיין תרצה לרצות אותך, ולכן היא תשתמש בליבה אחת לכמה threads: כל קצת זמן היא תחליף ביניהן, מה שנקרא context switch. ככה זה נראה שהדברים מתבצעים במקביל. זה עוזר לבעיה הראשונה (של הWord), אבל לא לשנייה. הcontext switch יאט את העבודה, כי למעבד יש עוד עבודה עכשיו לבצע. לכן בבעיה הזו בד"כ בודקים כמה ליבות יש למעבד ועושים spawn באותו מספר threads. יש שפות תכנות\סביבות עבודה שעושות את זה אוטומטית, כמו Go. שים לב שבד"כ במחשב רצות עוד כמה עשרות תוכניות, וכל אחת גם רוצה זמן מעבד, וזה עשוי להשפיע על העניין. הכל טוב ויפה. אז מה זה lock? או, זה קשור לשאלת השאלות: המלצר (לא צוחק. יש על זה בעיה של דייקסטרה עם פילוסופים ומלצר). בוא ניקח דוגמה פשוטה יותר. תריץ את קוד הC# הבא (לפני זה תוודא שאתה מבין אותו, למקרה שלא ידעת Task.Run מריץ thread חדש (לא מדויק אבל לא קריטי) וTask.WaitAll חוסם (blocks) את הthread הנוכחי עד שכל הthreads המצוינים הסתיימו): using System; using System.Threading.Tasks; public static class Program { private static int _Counter = 0; public static void DoWork() { for (int i = 0; i < 1_000_000; i++) { _Counter++; } } public static void Main() { Task t1 = Task.Run(DoWork); Task t2 = Task.Run(DoWork); Task.WaitAll(t1, t2); Console.WriteLine("{0:n0}", _Counter); } } הכנתי לך dotnetfiddle כאן. תיכנס לקישור וRun. אני מחכה. ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ טוב. הרצת? תריץ שוב. ושוב. ושוב. עשר פעמים. שיב לב לתוצאה! ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ מה קרה כאן? לא רק שהתוצאה היא לא 2 מיליון כמצופה, היא משתנה בין פעמים! מה נסגר?? אז כדי ממש להבין מה נסגר, צריך להיכנס לאסמבלי. אל תדאג, לא אתעלל בך. אשאיר את האסמבלי לפעם אחרת. במקום זאת אנסה להסביר מה קרה במילים (ההסבר פשטני במכוון, אל תטיפו לי על זה, אני יודע): כשאתה עושה ++, המעבד לא ממש יכול להיכנס לזיכרון ולהוסיף אחד. זה עניין מסובך יותר. קודם כל, צריך לקחת את הערך מהזיכרון. אחר כך, תוסיף 1. בסוף, תחזיר לזיכרון את הערך החדש. עכשיו, אם מבצעים את זה בלולאה, זה ממש בזבוז. למה לטעון כל פעם את הערך? עדיף לטעון פעם אחת בהתחלה ולשים פעם אחת בסוף. בוא נדמיין את זה: אני מתחיל את thread 1. הוא מתחיל לרוץ. טוען את _Counter מהזיכרון. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. .... טוב. הגיע תורו של thread 2. הוא מתחיל לרוץ. טוען את _Counter. נגיד שבשלב הזה thread 1 בוצע כבר 50 אלף פעמים, אז _Counter מכיל 50 אלף. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. מוסיף 1. ... בחזרה לthread 1. מוסיף 1 - ל_Counter שלו שהוא עדיין 50 אלף! מוסיף 1. מוסיף 1. מוסיף 1. ... וככה זה הולך. אם thread 1 יסיים ראשון, התוצאה תהיה מיליון. אם 2, התוצאה תהיה מיליון וחמישים אלף. עכשיו אפשר גם להבין למה הערכים השתנו בין הרצות: זה תלוי על איזה ליבה כל thread רץ - אולי במקרה thread 2 רץ על ליבה מהירה יותר, ולכן יסיים ראשון ויפסיד במירוץ? (כן כן, ראשון. זו לא טעות. תקרא שוב ותבין). זה תלוי בטמפרטורה של המחשב, במהירות הליבות, באם האנטי ווירוס מריץ סריקה בדיוק עכשיו ובאלף ואחת דברים נוספים. מירוץ. זה בדיוק מה שקורה כאן. זו גם הסיבה לשם של המונח: race condition. אל תזלזל בעניין. מרכזיית הטלפונים של Bell (אם אני זוכר נכון, לא הצלחתי למצוא בגוגל) קרסה בגלל race condition בלתי צפוי. ב1985 עד 1987 מספר אנשים מתו מסרטן בגלל race condition (מקור). איך מונעים את העניין? אנחנו צריכים איזו דרך להגיד למעבד: "חביבי, אל תמהר לשום מקום. אם מישהו אחר עסוק עם העניין עכשיו, תרגיע. חכה שהוא יסיים". ובכן, למרבה המזל, יש דרך כזו. הרבה, למען האמת. נתעסק באחת: locking. הרעיון הוא כזה: אנחנו יוצרים אובייקט שבד"כ נקרא mutex (ר"ת של mutual exclusion) או שם דומה. לפני שניגשים למשאב המשותף (_Counter, במקרה שלנו), אנחנו "נועלים" את הmutex, ומשחררים אותו כשאנחנו מסיימים. אם אנחנו מנסים לנעול mutex שכבר נעול ע"י thread אחר, הthread שלנו נחסם עד שהאחר משחרר את המנעול שלו. זה לא תופס זמן מעבד: זה מבוצע ברמת מערכת ההפעלה ובמידה מסוימת אפילו המעבד. הינה זה בC#: using System; using System.Threading; using System.Threading.Tasks; public static class Program { private static int _Counter = 0; private static Mutex _Mutex = new Mutex(); public static void DoWork() { for (int i = 0; i < 1_000_000; i++) { _Mutex.WaitOne(); _Counter++; _Mutex.ReleaseMutex(); } } public static void Main() { Task t1 = Task.Run(DoWork); Task t2 = Task.Run(DoWork); Task.WaitAll(t1, t2); Console.WriteLine("{0:n0}", _Counter); } } וכרגיל יש קישור כאן. יש לC# כלי להפוך את זה לנוח יותר: המשפט lock: using System; using System.Threading.Tasks; public static class Program { private static int _Counter = 0; private static object _CounterLock = new object(); public static void DoWork() { for (int i = 0; i < 1_000_000; i++) { lock (_CounterLock) { _Counter++; } } } public static void Main() { Task t1 = Task.Run(DoWork); Task t2 = Task.Run(DoWork); Task.WaitAll(t1, t2); Console.WriteLine("{0:n0}", _Counter); } } והקישור: https://dotnetfiddle.net/UJENnV. זה מיתרגם לקוד הבא: using System; using System.Threading; using System.Threading.Tasks; public static class Program { private static int _Counter = 0; private static object _CounterLock = new object(); public static void DoWork() { for (int i = 0; i < 1_000_000; i++) { bool lockWasTaken = false; try { Monitor.Enter(_CounterLock, ref lockWasTaken); _Counter++; } finally { if (lockWasTaken) { Monitor.Exit(_CounterLock); } } } } public static void Main() { Task t1 = Task.Run(DoWork); Task t2 = Task.Run(DoWork); Task.WaitAll(t1, t2); Console.WriteLine("{0:n0}", _Counter); } } https://dotnetfiddle.net/L7Z5QW. מכאן אתה יכול להבין למה הייתי צריך אובייקט נפרד מ_Counter לlock - צריך reference type, כי אחרת הוא יועתק ולא נוכל לרכוש מנעול. ואחרון חביב, למקרים נפוצים כמו פעולות אריתמטיות יש לנו את המחלקה Interlocked: using System; using System.Threading; using System.Threading.Tasks; public static class Program { private static int _Counter = 0; public static void DoWork() { for (int i = 0; i < 1_000_000; i++) { Interlocked.Increment(ref _Counter); } } public static void Main() { Task t1 = Task.Run(DoWork); Task t2 = Task.Run(DoWork); Task.WaitAll(t1, t2); Console.WriteLine("{0:n0}", _Counter); } } https://dotnetfiddle.net/Ks6Tt1. זה גם מהיר יותר כי locking זה איטי, וInterlocked מיתרגם להוראה ברמת המעבד (לפחות בx86). הערה חשובה: רוב המחלקות ב.NET, כולל מחלקות האוספים, אינן thread-safe. יש לנו את System.Collections.Concurrent עבור מחלקות אוספים שהן כן. טוב, די לעכשיו. כתבתי הרבה. על async/await בהמשך... המשך יבוא.
    1 point
  11. את משלמת תוספת מחיר על WIN 10 פרו, כאשר אין לך שום צורך בתכונות המתקדמות שיש בגירסת הפרו. שזה לא כזה משנה אם המחשב מתאים לך. אבל צריך להיות מודעים לכך. לא הייתי קורא ללקחת את ה i5-10210U המדובר "לשרוד", מדובר במעבד בהחלט טוב, והוא לא יהיה רחוק בביצועיו מה Core i7 בדגם היקר יותר (למען האמת, את כנראה בכלל לא תבחיני בהבדלים בינהם). במחשב שבחרת יש מספר יתרונות: מדובר בסידרה העסקית של דל. בהתאם, למחשב תהיה איכות בניה טובה, ויש לו אחריות ל 3 שנים. הוא קל ודק. באותו התקציב, ניתן למצוא מחשבים עם תקופת אחריות קצרה יותר, מסדרת לא "עסקיות", אולי פחות דקים\קלים, אך עם חומרה טובה יותר (יותר זכרון, או יותר נפח אחסון). על מנת למטב את ההחלטה שלך, עליך להחליט מה יותר חשוב לך מבין דברים אלו. אציין שוב שאני חושב שאם תקחי את המחשבים האלו (שציינת), את בהחלט תפיקי מהם תועלת והם ישרתו אותך בהצלחה.
    1 point
  12. איך אומרים, תמיד התשובה הכי טובה לגבי זה שבחיים לא ראית משהו מסוים, אז התשובה שלי היא שתמיד יש פעם ראשונה. ולא, זה ממש לא דבר רע... זה נכון שיש תמיד חומרה חדשה מעבר לפינה, אבל היו גם מצבים כאלה שאנשים היו מרחק של חודשים בודדים מיציאה של דור חדש, שהבטיח שיפור גדול ומורגש מאוד ממה שהם תיכננו לרכוש, אז באמת היה עדיף להם לחכות כי השיפור שהובא להם הוא באמת גדול. כאן לגבי ה-4000 מדובר בהיבט די עצום, 70% מעל 3090 זה משהו שלא עושים אפילו תוך שנתיים אני חושב.. אז... לא מדובר כאן במשהו פשוט חזק יותר, אלא במשהו חזק הרבה יותר.. ובגדול המחשב לא דחוף לי לכאן ועכשיו, למרות שאני כן רוצה אותו כי כבר חיכיתי לא מעט אבל זה לא סופר קריטי.. מובן לי שתמיד יוצא משהו חדש, אבל בכל זאת יותר מאשמח אם תצא מהעניינים שלי ותתרכז בשלך. תודה.
    0 points
×
  • צור חדש...

בראש החדשות:

חדש באתר