Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
scie
提交
825df695
S
scie
项目概览
Phodal
/
scie
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
scie
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
825df695
编写于
9月 09, 2020
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: fix some cloned in error pos issues
上级
f2ad21e8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
42 addition
and
10 deletion
+42
-10
benchmark/src/main.rs
benchmark/src/main.rs
+10
-2
docs/adr/0004-cache-compiled.md
docs/adr/0004-cache-compiled.md
+27
-1
scie-grammar/src/grammar/grammar.rs
scie-grammar/src/grammar/grammar.rs
+4
-6
vscode-tests/vendor/main.js
vscode-tests/vendor/main.js
+1
-1
未找到文件。
benchmark/src/main.rs
浏览文件 @
825df695
...
...
@@ -11,7 +11,11 @@ fn main() {
let
target_dir
=
get_target_dir
();
let
root_dir
=
get_top_dir
(
&*
target_dir
);
let
lang_spec_dir
=
root_dir
.join
(
"extensions"
)
.join
(
"json"
)
.join
(
"syntaxes"
)
.join
(
"JSON.tmLanguage.json"
);
let
lang_spec_dir
=
root_dir
.join
(
"extensions"
)
.join
(
"json"
)
.join
(
"syntaxes"
)
.join
(
"JSON.tmLanguage.json"
);
let
lang_test_dir
=
Path
::
new
(
"fixtures"
)
.join
(
"JavaScript.tmLanguage.json.txt"
);
let
code
=
read_code
(
&
lang_test_dir
);
...
...
@@ -28,7 +32,11 @@ fn main() {
}
if
let
Ok
(
n
)
=
SystemTime
::
now
()
.duration_since
(
start
)
{
println!
(
"TOKENIZING {:?} length using grammar source.js {:?} ms"
,
code
.len
(),
n
.as_millis
())
println!
(
"TOKENIZING {:?} length using grammar source.js {:?} ms"
,
code
.len
(),
n
.as_millis
()
)
}
}
...
...
docs/adr/0004-cache-compiled.md
浏览文件 @
825df695
...
...
@@ -8,7 +8,33 @@ Date: 2020-09-09
## Context
Context here...
For now, we don't implement all cached logic from vscode-textmate, if we want to do better on it, we need this.
```
JSON
TOKENIZING 100210 lines using grammar source.js
Oniguruma: 216 ms., Onigasm: 117 ms. (1.8x faster)
```
we used:
```
➜ benchmark git:(master) ✗ cargo run benchmark
Compiling benchmark v0.1.0 (/Users/fdhuang/repractise/scie/benchmark)
Finished dev [unoptimized + debuginfo] target(s) in 1.26s
Running `/Users/fdhuang/repractise/scie/target/debug/benchmark benchmark`
TOKENIZING 100210 length using grammar source.js 107204 ms
```
with release version:
```
/Users/fdhuang/repractise/scie/target/release/benchmark
TOKENIZING 100210 length using grammar source.js 10306 ms
```
## Decision
...
...
scie-grammar/src/grammar/grammar.rs
浏览文件 @
825df695
...
...
@@ -11,9 +11,9 @@ use crate::rule::{
};
use
core
::
cmp
;
use
scie_scanner
::
scanner
::
scanner
::
IOnigCaptureIndex
;
use
std
::
path
::
Path
;
use
std
::
fs
::
File
;
use
std
::
io
::
Read
;
use
std
::
path
::
Path
;
pub
trait
Matcher
{}
...
...
@@ -407,9 +407,9 @@ impl Grammar {
let
capture_scope_name
=
capture_rule
.get_name
(
Some
(
line_text
.clone
()),
Some
(
capture_indices
.clone
()));
if
let
Some
(
_
name
)
=
capture_scope_name
.clone
()
{
let
mut
base
=
stack
.c
lone
()
.content_name_scopes_list
;
let
mut
base
=
stack
.c
ontent_name_scopes_list
.clone
()
;
if
local_stack
.len
()
>
0
{
base
=
local_stack
[
local_stack
.len
()
-
1
]
.
clone
()
.scopes
;
base
=
local_stack
[
local_stack
.len
()
-
1
]
.
scopes
.clone
()
;
}
let
capture_rule_scopes_list
=
base
.push
(
grammar
,
capture_scope_name
.clone
());
local_stack
.push
(
LocalStackElement
::
new
(
...
...
@@ -617,11 +617,9 @@ impl IRuleRegistry for Grammar {
#[cfg(test)]
mod
tests
{
use
std
::
fs
::
File
;
use
std
::
io
::{
Read
,
Write
};
use
std
::
path
::
Path
;
use
std
::
io
::
Write
;
use
crate
::
grammar
::{
Grammar
,
StackElement
};
use
crate
::
inter
::
IRawGrammar
;
use
crate
::
rule
::
abstract_rule
::
RuleEnum
;
use
crate
::
rule
::
IRuleRegistry
;
...
...
vscode-tests/vendor/main.js
浏览文件 @
825df695
...
...
@@ -738,7 +738,7 @@ var Grammar = /** @class */ (function () {
// console.log(this._ruleId2desc.length);
// let fs = require('fs');
// let data = JSON.stringify(this._ruleId2desc, null, 2);
// fs.writeFileSync("
testdata
/c.out.json", data, 'utf8');
// fs.writeFileSync("
fixtures
/c.out.json", data, 'utf8');
var
isFirstLine
;
if
(
!
prevState
||
prevState
===
StackElement
.
NULL
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录