ํฌ์ŠคํŠธ

WitchMendokusai DevLog 05

WitchMendokusai DevLog 05

๐Ÿ“€ ์ตœ์ ํ™” (๋ผ๊ณ  ์“ฐ๊ณ  ๊ฐˆํ†ต์ง“ ์ฐพ๊ธฐ)


๋‚ด๊ฐ€ ๋งŒ๋“  ์ปค์Šคํ…€ ์—๋””ํ„ฐ์˜ ํŠน์ • ๊ธฐ๋Šฅ์ด ์ˆ˜์ƒํ•  ์ •๋„๋กœ ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค. ์ฒด๊ฐ ์ƒ ํ•œ 1์ดˆ ์ •๋„ ๊ฑธ๋ฆฌ๋Š” ๋“ฏ..
๊ทธ๋™์•ˆ ๊ทธ๋ ค๋ ค๋‹ˆ ํ•˜๊ณ  ๋ฐฉ์น˜ํ–ˆ์—ˆ๋Š”๋ฐ, ์ปค์Šคํ…€ ์—๋””ํ„ฐ ์ด๊ฒƒ์ €๊ฒƒ ์ •๋ฆฌํ•˜๊ณ  ํ•˜๋‹ค๋ณด๋‹ˆ ์—ฌ๊ฐ„ ์‹ ๊ฒฝ์“ฐ์ด๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค.
์ปค์Šคํ…€ ์—๋””ํ„ฐ ์ •๋ฆฌํ•˜๋Š” ๊น€์—, ์ด 1์ดˆ๊ฐ€ ๋Œ€์ฒด ์–ด๋””์„œ ๋‚˜์˜ค๋Š” ๊ฑด์ง€ ์ฐพ์•„๋ดค๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void UpdateGrid()
{
    Debug.Log($"{nameof(UpdateGrid)}");

    grid.Clear();

    InitDic(CurType);
    Dictionary<int, DataSO> dataSOs = DataSOs[CurType];

    DataSOSlots.Clear();
    for (int id = 0; id < ID_MAX; id++)
    {
        if (dataSOs.TryGetValue(id, out DataSO dataSO))
        {
            MDataSOSlot slot = new((slot) => SelectDataSOSlot(slot));
            slot.SetDataSO(dataSO);
            DataSOSlots.Add(id, slot);
            grid.Add(slot.VisualElement);
        }
    }

    SelectDataSOSlot(DataSOSlots.Values.First());
    Repaint();

    // Debug.Log($"{nameof(UpdateGrid)} End");
}

์ด๊ณณ์ €๊ณณ ๋กœ๊ทธ ์ฐ์–ด๋ณด๋‹ˆ ๋ฌธ์ œ์˜ 1์ดˆ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๊ณณ์€ ์ด ํ•จ์ˆ˜.
์ปค์Šคํ…€ ์—๋””ํ„ฐ์—์„œ ํŠน์ • ๊ทธ๋ฆฌ๋“œ์˜ ์š”์†Œ๋“ค์„ ๋‹ค์‹œ ๊ทธ๋ ค๋‚ด๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ธ๋ฒคํ† ๋ฆฌ ๊ฐ™์€ ๊ฑธ ๋‹ค์‹œ ๊ทธ๋ ค๋‚ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋น„์Šทํ•˜๋‹ค.

์ฒ˜์Œ ๋Œ€์ถฉ ํ›์–ด๋ดค์„ ๋• ์ฝ”๋“œ์— ์ด์ƒํ•œ ์ ์„ ๋ชป ์ฐพ์•„์„œ (์ด๊ฑธ ์™œ ์ฐพ์•˜์ง€),
System.Diagnostics.Stopwatch๋ฅผ ํ†ตํ•ด ๊ฐ ๋ช…๋ น๋“ค์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€ ์ฒดํฌํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋‹ค.

ํ .. InitDic(CurType) ๋ถ€๋ถ„์ด ๋ฌธ์ œ์ธ๊ฐ€? ํŒŒ์ผ ํƒ์ƒ‰์ด๋ผ ์กฐ๊ธˆ ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๊ธดํ•ด..
์•„๋‹ˆ๋ฉด ๊ทธ๋ฆฌ๋“œ ์š”์†Œ๋“ค ๋‹ค ์ง€์šฐ๊ณ  ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„? ์˜ค๋ธŒ์ ํŠธ ํ’€ ์—†์ด ์ƒ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ง€์›Œ์„œ ๊ฐ€๋น„์ง€๊ฐ€ ํ•œ ๋ฒˆ์— ์ซ™ ์Œ“์—ฌ๋ฒ„๋ฆฌ๋Š”๊ฑด๊ฐ€..?
๊ฐ ๋ช…๋ น๋“ค ์‚ฌ์ด์‚ฌ์ด์— StopWatch ๋„ฃ๊ณ  ๋กœ๊ทธ๋ฅผ ์ฐ์–ด๋ดค๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์˜ค์ž‰โ€ฆ ๊ฐ ๋ช…๋ น๋“ค์—๋Š” 0~10ms ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
๋ฐ˜๋ณต๋ฌธ์„ ๊ฐ์‹ธ๋Š” StopWatch๋งŒ 500ms ์ •๋„๊ฐ€ ๊ฑธ๋ฆฌ๋Š”๋ฐ.. ๋ญ์ง€?

ํ•˜๊ณ  ๋‹ค์‹œ ๋ฐ˜๋ณต๋ฌธ์„ ๋ณด๋‹ˆ, ์•„๋ฟ”์‹ธ. ์ด๊ฒŒ ๋Œ€์ฒด ๋ฌด์Šจ ์ฝ”๋“œ์ง€?
100_000_000 ์œผ๋กœ ์„ค์ •ํ•ด๋‘” ID_MAX ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๊ณ , ๊ทธ ์•ˆ์—์„œ๋Š” ๋”•์…”๋„ˆ๋ฆฌ์— TryGetValue..?
๊ทธ๋ƒฅ ๋”•์…”๋„ˆ๋ฆฌ ์ˆœํšŒํ•˜๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€?

๊ทธ๋ ‡๋‹ค.

๊ทธ๋ƒฅ ์–ธ์  ๊ฐ€ ๊ฐˆํ†ต์ง“์„ ํ•˜๊ณ  ์žŠ์–ด๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค.
์ด๋ ‡๊ฒŒ ๋ฐ”๋กœ ๋ณด์ด๋Š” ๋ฌธ์ œ๋ฅผ ๊ทธ๋™์•ˆ ๋ฐฉ์น˜ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค !!

1
2
3
4
5
6
7
8
DataSOSlots.Clear();
foreach ((int id, DataSO dataSO) in dataSOs)
{
    MDataSOSlot slot = new((slot) => SelectDataSOSlot(slot));
    slot.SetDataSO(dataSO);
    DataSOSlots.Add(id, slot);
    grid.Add(slot.VisualElement);
}

๋ฐ˜๋ณต๋ฌธ ๋ถ€๋ถ„ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ ์ฐ์–ด๋ณด๋‹ˆ, ์—ญ์‹œ 0~10ms ์ •๋„ ๊ฑธ๋ฆฐ๋‹ค.

์ด๊ฒƒ๋„.. ์ตœ์ ํ™”๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๊ฑด๊ฐ€?
์•„๋‹ˆ๋‹ค.. ์ด๊ฑด ๋””๋ฒ„๊น…์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค..

To Be Continued..

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.