소스 검색

perf(compare): 去掉多余的对比

RyanCW 1 년 전
부모
커밋
7fc133a83a
1개의 변경된 파일1개의 추가작업 그리고 23개의 파일을 삭제
  1. 1 23
      RyanJson/RyanJson.c

+ 1 - 23
RyanJson/RyanJson.c

@@ -2290,6 +2290,7 @@ RyanJsonBool RyanJsonCompare(RyanJson_t a, RyanJson_t b)
 
     case RyanJsonTypeNumber:
     {
+
         if (RyanJsonTrue == RyanJsonIsInt(a) && RyanJsonTrue == RyanJsonIsInt(b))
             return RyanJsonGetIntValue(a) == RyanJsonGetIntValue(b) ? RyanJsonTrue : RyanJsonFalse;
 
@@ -2325,7 +2326,6 @@ RyanJsonBool RyanJsonCompare(RyanJson_t a, RyanJson_t b)
 
         RyanJsonObjectForEach(a, a_element)
         {
-            // TODO This has O(n^2) runtime, which is horrible!
             b_element = RyanJsonGetObjectByKey(b, RyanJsonGetKey(a_element));
             if (NULL == b_element)
                 return RyanJsonFalse;
@@ -2334,17 +2334,6 @@ RyanJsonBool RyanJsonCompare(RyanJson_t a, RyanJson_t b)
                 return RyanJsonFalse;
         }
 
-        RyanJsonObjectForEach(b, b_element)
-        {
-            // TODO This has O(n^2) runtime, which is horrible!
-            a_element = RyanJsonGetObjectByKey(a, RyanJsonGetKey(b_element));
-            if (NULL == a_element)
-                return RyanJsonFalse;
-
-            if (RyanJsonTrue != RyanJsonCompare(b_element, a_element))
-                return RyanJsonFalse;
-        }
-
         return RyanJsonTrue;
     }
 
@@ -2409,7 +2398,6 @@ RyanJsonBool RyanJsonCompareOnlyKey(RyanJson_t a, RyanJson_t b)
 
         RyanJsonObjectForEach(a, a_element)
         {
-            // TODO This has O(n^2) runtime, which is horrible!
             b_element = RyanJsonGetObjectByKey(b, RyanJsonGetKey(a_element));
             if (NULL == b_element)
                 return RyanJsonFalse;
@@ -2418,16 +2406,6 @@ RyanJsonBool RyanJsonCompareOnlyKey(RyanJson_t a, RyanJson_t b)
                 return RyanJsonFalse;
         }
 
-        RyanJsonObjectForEach(b, b_element)
-        {
-            // TODO This has O(n^2) runtime, which is horrible!
-            a_element = RyanJsonGetObjectByKey(a, RyanJsonGetKey(b_element));
-            if (NULL == a_element)
-                return RyanJsonFalse;
-
-            if (RyanJsonTrue != RyanJsonCompareOnlyKey(b_element, a_element))
-                return RyanJsonFalse;
-        }
         return RyanJsonTrue;
     }