[TIL] 82 CSV ,ProFiler โญโญ
์นดํ ๊ณ ๋ฆฌ: Til
CSV
, ProFiler
์ต์ข ํ ํ๋ก์ ํธ 24์ผ์ฐจ
ย ย [o] ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ - 53
ย ย [o] ๋ฉด์ ๋ฌธ์ ํ๊ธฐ - 5
ย ย [o] 1,2๋ฐ ๋ง๋ฌด๋ฆฌ์ ๋ฆฌ ์ฑ~
ย ย [x] ์ฌํ์ฃผ์ฐจ ๊ฐ์ ๋ฃ๊ธฐ.
ย ย [x] ๋์์ธ ์ฝ๋ ํจํด ์ดํด,์ ๋ฆฌํ๊ธฐ.
ย ย [x] ์๋ฃ๊ตฌ์กฐ ๋์์ธํจํด ๊ฐ์ ๋ค์ ๋ฃ๊ธฐ.
๊ฐ๋จํ CSV ๋ถ๋ฌ์ค๊ธฐ
๋ก๋ฉ์ฌ TIP ๋ถ๋ถ์ ์ฐ๊ธฐ์ํ CSV์ฌ์ฉ , ๋ถ๋ฌ์ค๊ธฐ CSVReader ์คํฌ๋ฆฝํธ ์ฐธ์กฐ
CSVReader.cs
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
public class CSVReader
{
static string SPLIT_RE = @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))";
static string LINE_SPLIT_RE = @"\r\n|\n\r|\n|\r";
static char[] TRIM_CHARS = { '\"' };
public static List<Dictionary<string, object>> Read(string file)
{
var list = new List<Dictionary<string, object>>();
TextAsset data = Resources.Load(file) as TextAsset;
var lines = Regex.Split(data.text, LINE_SPLIT_RE);
if (lines.Length <= 1) return list;
var header = Regex.Split(lines[0], SPLIT_RE);
for (var i = 1; i < lines.Length; i++)
{
var values = Regex.Split(lines[i], SPLIT_RE);
if (values.Length == 0 || values[0] == "") continue;
var entry = new Dictionary<string, object>();
for (var j = 0; j < header.Length && j < values.Length; j++)
{
string value = values[j];
value = value.TrimStart(TRIM_CHARS).TrimEnd(TRIM_CHARS).Replace("\\", "");
object finalvalue = value;
int n;
float f;
if (int.TryParse(value, out n))
{
finalvalue = n;
}
else if (float.TryParse(value, out f))
{
finalvalue = f;
}
entry[header[j]] = finalvalue;
}
list.Add(entry);
}
return list;
}
}
๋ถ๋ฌ์ค๊ธฐ
List<Dictionary<string, object>> data_Dialog = CSVReader.Read("CSV/Tip");
_randomIndex = Random.Range(0, data_Dialog.Count);
_tipText.text = (data_Dialog[_randomIndex]["Tip"].ToString());
๋ถ๋ฌ์ค๊ธฐ๋ ๋๋ค. ๋ค์์ ๋ ๋ง์๋ฐ์ดํฐ๋ ๋ํํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ ์ข ๋ ๊ณต๋ถ.
ํ๋กํ์ผ๋ฌ(ProFiler)
๋๊ฐ์ metarial -> enable gpuinstance ๊ฐ์ matarial์ ํ๋ฒ์ ๋๋ก์ฐ์ฝ๋ก ๋๊ธด๋ค.
์ผ์ชฝ์ ์ฒดํฌํด์ ํด๋น ๋ด์ญ์ ๋ณผ ์ ์๋ค.
ํ๋จ์ข์ธก timeline, hierarchy
์ต์ ํ ํ ์์ ์ฐพ๊ธฐ.
ํต์ฌ gfx waitforpresent~~~ -> gpu ๊ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค -> ๋ ๋๋ง ์ต์ ํ ํ์
ํต์ฌ gfx waitforcommand~~~ -> cpu๊ฐ ๋ฐ๋น ์ ๋ช
๋ น์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค -> cpu์ต์ ํ ํด์ผ๋๋ค
์ธ๋ถ์ ์ผ๋ก ๋ณผ๋ ค๋ฉด ์๋จ์ deep profile ํ์ฑํ ํ๋จ์ฐ์ธก ์ ์ฒดํฌ ๋ค ํ๊ธฐ.
๋ง์ปค using.profiling
public static readonly profilermarker mymarker = new profilemarker(โmymarkerโ);
mymarker.begin ~ mymarker.end ๊น์ง์๋ฅผ ์ฒดํฌํ ์ ์๋ค.
๋น๋์์ development build-> auto profiler ์ฒดํฌ ์ ์๋ํฐ ๋นผ๊ณ ํ๋กํ์ผ ๊ฐ๋ฅ.
์ก๋ด,์ ๋ฆฌ
CSV, ํ๋กํ์ผ๋ฌ
๋๊ธ๋จ๊ธฐ๊ธฐ