Ver Fonte

:zap: Improve block loading performance on Windows/Linux/macOS amd64 arch https://github.com/siyuan-note/siyuan/issues/9084

Daniel há 1 ano atrás
pai
commit
4eca8c43e6
2 ficheiros alterados com 16 adições e 7 exclusões
  1. 1 1
      kernel/filesys/json_unmarshal.go
  2. 15 6
      kernel/filesys/json_unmarshal_amd64.go

+ 1 - 1
kernel/filesys/json_unmarshal.go

@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-//go:build !(windows && amd64)
+//go:build !amd64
 
 package filesys
 

+ 15 - 6
kernel/filesys/json_unmarshal_windows_amd64.go → kernel/filesys/json_unmarshal_amd64.go

@@ -18,13 +18,22 @@ package filesys
 
 import (
 	"github.com/bytedance/sonic"
+	"github.com/goccy/go-json"
+	"github.com/siyuan-note/logging"
 )
 
-func unmarshalJSON(data []byte, v interface{}) error {
+func unmarshalJSON(data []byte, v interface{}) (err error) {
 	//now := time.Now()
-	//defer func() {
-	//	elapsed := time.Since(now)
-	//	logging.LogInfof("[sonic] unmarshalJSON took %s", elapsed)
-	//}()
-	return sonic.Unmarshal(data, v)
+	defer func() {
+		if e := recover(); nil != e {
+			logging.LogWarnf("[sonic] unmarshalJSON failed: %s", e)
+			err = json.Unmarshal(data, v)
+		} /*else {
+			elapsed := time.Since(now)
+			logging.LogInfof("[sonic] unmarshalJSON took %s", elapsed)
+		}*/
+	}()
+
+	err = sonic.Unmarshal(data, v)
+	return
 }