Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20140715154648_factor_cut-slice_memo |
|
factor_cut-slice_memo
レコードセット(Array)を一定数で分割した配列を作る。
例: 229295 件あるデータを 49000 件毎に分割する
IN: scratchpad auto-use "SELECT id FROM items" sql-query
--- Data stack:
{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~...
! 割り算の結果を integer で -> /i
IN: scratchpad auto-use dup length 49000 /i
--- Data stack:
{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~...
4
! cut-slice ( seq n -- before-slice after-slice )
! after-slice を 49000 で割る ✕ length を割った回数分(times)
IN: scratchpad auto-use [ 49000 cut-slice ] times
--- Data stack:
T{ slice f 0 49000 ~array~ }
T{ slice f 49000 98000 ~array~ }
T{ slice f 98000 147000 ~array~ }
T{ slice f 147000 196000 ~array~ }
T{ slice f 196000 229295 ~array~ }
! 最後にスタックに積んだ全ての Slice を Array にまとめる
IN: scratchpad auto-use { } 4 1 + [ swap suffix ] times
--- Data stack:
{ ~slice~ ~slice~ ~slice~ ~slice~ ~slice~ }
http://docs.factorcode.org/content/word-cut-slice,sequences.html http://docs.factorcode.org/content/word-__slash__i%2Cmath.html http://docs.factorcode.org/content/word-times,math.html
|
| © Shin Nakamura/BasicWerk 2014 |