가능한 한 빨리 작업 할 효율적인 코드를 작성해야하는 프로젝트가 있지만 지식 부족으로 인해 ...보다 효율적인 방법으로 정렬을 작성하는 방법은 무엇입니까?
그래서 asp.net (MVC) 프로젝트를 엔티티 프레임 워크를 사용하고 또한 웹 서비스를 사용하여 세부 정보에 대한 정보를 얻어야합니다. 먼저 웹 서비스에 요청하고 긴 문자열로 응답합니다. 추가 작업을 위해 문자열 목록에서 구문을 분석해야합니다.
나는 다음과 같은 문자열을 구문 분석 :
string resultString;
char[] delimiterChars = { ',', ':', '"', '}', '{' };
List<string> words = resultString.Split(delimiterChars).ToList();
여기에서 나는 정보와 같이 정크 행을 많이 가지고 행의 많은으로 목록을 가지고 :
을나는 정크 정보에서이 목록을 삭제하기로 결정 했으므로 추가 방법으로 작동하지 않고 ifs 등으로이 행을 확인하지 않도록하십시오.
for (int i = words.Count - 1; i >= 0; i--)
{
if (words[i] == "" || words[i] == "data" || words[i] == "array") words.RemoveAt(i);
}
나는 명확한 목록을 얻었지만, 가격, 크기 등의 모든 십진수는 ,
으로 구분되어 있습니다. 따라서 가격이 21,55 달러라면 내 요소 21과 55처럼 보입니다. 분리 자로부터 ,
을 그냥 삭제하십시오. 웹 서비스에서 응답을 얻으려는 문자열은 주로 ,
을 넣어서 정보를 분리하기 때문입니다.
그래서 다시 진수 접착제 결정 (전리스트 요소 모습이 블록 1) ATTRVALUE 2) 21 (3)) (55)와 같은 후 1) ATTRVALUE 2) 21.55)를 :
for (int i = 0; i < words.Count(); i++)
{
if (words[i] == "attrValue")
{
try
{
var seconPartInt = Int32.Parse(words[i + 2]);
words[i + 1] += "." + words[i + 2];
}
catch { }
}
if (words[i].Contains("\\/")) words[i].Replace("\\/", "/");
}
모든 괜찮아요, 목록 정렬, 소수 자릿수 수집하지만 속도는 30 % 느려집니다. 스톱워치 및 코드 블록에 대한 몇 가지 테스트를 수행 한 결과 위 코드로 전체 프로그램이 너무 느려지는 것을 알게되었습니다 ...
총계 : 저속 코드를 사용할 수없고 동시에 알지 못합니다. 더 빨리 작동시키는 법. 문제는 문자열을 int로 변환하여 목록의 다음 요소가 제 번호 일 경우 두 번째 부분인지 여부를 확인하는 것입니다.
코드를 어떻게 최적화 할 수 있습니까?
웹 서비스에서 CSV 파일을 가져 오는 것 같습니다. 파일이 매번 같을 지 알고 있습니까? 그렇다면 CSV 파서로 반환을 직렬화하는 방법에 대해 생각해 보겠습니다. 내 의견으로는 객체로 관리하기가 더 쉬울 것이며, 기본적으로 필요없는 것을 무시하도록 선택할 수 있습니다. –
왜 문자열 작업을하나요?문자열을 객체로 구문 분석하고 객체에서 작업 할 수 있습니다. – BWA
'String.Split'을 계속 사용한다면 빈 문자열을 없애는 더 쉬운 방법은'StringSplitOptions' 매개 변수를 취하는 버전을 사용하는 것입니다. 'StringSplitOptions.RemoveEmptyEntries' 옵션을 사용해야합니다. – hatchet