duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from dnaugsuz
不过我听人说 Kotlin 支持尾调用优化(Tail-call Optimization),并且更 Functional 一些,所以很值得尝试
Forwarded from dnaugsuz
Transfer Rate 慢了不少,几乎是慢五倍
你在用 DartVM 还是 JVM?JVM 是 Oracle 的 HotSpot?
Forwarded from Rubicon
DartVM
Forwarded from dnaugsuz
1 和 2 都是 DartVM?
Forwarded from Rubicon
是的
Forwarded from dnaugsuz
... 那 Dart 2 性能可能的确下降了吧
Forwarded from dnaugsuz
唯一的不足就是 GraalVM AOT 优化虚拟机目前不支持
但是,Dalvik ART 模式支持 Kotlin(当然不是直接支持,都是经过 Dexer 翻译的)
Forwarded from dnaugsuz
五倍... 我看这类型还是别检查了吧
毕竟不是 JNI 于 Java 的关系一样可以多考虑安全
Forwarded from dnaugsuz
语言特性和 Java 不是差不多
Forwarded from dnaugsuz
有可能,他说的是启动
Forwarded from dnaugsuz
JIT 引擎启动一般需要花时间,类似 LLVM 的优化器想必也得有些全局状态要初始化吧...
Forwarded from dnaugsuz
只是照着以前开发 Java 的经验去使用 Kotlin 这些便利和高等语言特性是察觉不到的,比较语言关键字的话可见一斑
Forwarded from dnaugsuz
我发现开发 Android 的工程师有的根本没专门学过 Kotlin,只是基本熟悉了和 Java 的语法变化就当成 语法糖版本的 Java 来用,甚至有人连 Kotlin 的原型扩展 Prototype Extension 都不知道,还在用 static 方法... 😶
Forwarded from dnaugsuz
后来 Dart2 开倒车了 👾
#daily 见到了一些非常简单的逻辑,但是居然算法就无法立刻想出来...

比如三个并排 LED 的『进度』提示

while true
all_lights on
sleep k
light_r off
sleep k
light_c off
sleep k
light_l off
sleep k
continue


然后这个循环可以包装一下,成为 Coroutine 或者 Thread 模式的...

和 MDWiki 的 未读提示

routine update
if view_top < element_pos.low_y
make_gray view
伪代码实现付
Forwarded from dnaugsuz
LLVM 做得也挺多的... PassManager 要加载一大堆不是完全无关的 Pass,这些 Pass 还要初始化...
JIT 编译是很耗时的,虽然词法分析和语法分析之前都做了,bitcode 到机器代码要经过大得吓人的工序,数十个 Pass... 分析 Pass 和优化 Pass 都比较花时间
循环优化和启发式余赘指令合并、各种图操作、寄存器选择大概都是比较花时间的吧

AOT 就基本不用再多花时间做这些了
LineTerminator = \r|\n|\r\n
InputCharacter = [^\r\n]

TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "*/"
EndOfLineComment = "//" {InputCharacter}* {LineTerminator}?

Comment = {TraditionalComment} | {EndOfLineComment}

%x YYINITIAL
%s STRING CHAR

%%

<YYINITIAL> {
{Comment} { }
\" { yybegin(STRING); }
\' { yybegin(CHAR); }
}

<STRING>("\"") { yybegin(YYINITIAL); printf("\""); }

<CHAR>("\'") { yybegin(YYINITIAL); printf("'"); }

<<EOF>> {}

%%

int main(int argc, const char *argv[]) {
if (argc > 1)
yyin = fopen(argv[1], "r");
else
yyin = stdin;

yylex();

return 0;
}