Mình đọc trên documentation của Lodash thì _.extend là alias của _.assignIn; _.assign và _.assignInchỉ khác nhau một chút ở việc lựa chọn property của source object. _.assignIn giống như việc dùng for...in với object vậy
À, hàng tỉ phép so sánh thì nó không nhiều lắm đâu bạn. Nó còn nhiều thao tác ở trong đấy nữa.
VD: Load hết dữ liệu từ db vào RAM, INSERT dữ liệu từ RAM vào DB, parse, regex, ...
Nếu chỉ có như demo của bạn thì đúng là chưa đến 1 giây. Của mình là ~400ms.
Ở đây mình đang cố gắng hướng đến cách chọn giải pháp.
Anyway, cảm ơn cái code F# bá đạo nhé. Lần đầu được thấy code F#.
@kopitop Thanks bạn !
Mình đồng ý với cách nhìn của bạn. Có thể cách nhìn này là một high level của bài viết này chăng ?
Dù sao thì học bất kì ngôn ngữ nào, level nào đều phụ thuộc vào nhiều yếu tố: mục đích, công việc, sở thích, bị ép buộc ... kể cả khả năng của mỗi người. Vì thế sẽ là không có quy chuẩn cho việc học lập trình, bản thân mỗi người phải tự lựa chọn cách phù hợp nhất thôi.
Nếu dữ liệu nhỏ thì tại sao không load hết vào ram rồi viết vào DB sau nhỉ.
Mình viết thử một chương trình để test, chạy debug thử bằng f#
open System
open System.Diagnostics
open System.Collections.Generic
let rnd = Random()
let genUrl () =
string(rnd.Next 10_000_000) + ".com"
[<EntryPoint>]
let main argv =
let db = [| for _ in 1..1_000_000 -> genUrl() |]
let newFile = HashSet<string>( [| for _ in 1..10_000_000 -> genUrl() |] )
let sw = Stopwatch.StartNew()
printfn "Start"
db
|> Array.filter newFile.Contains
|> Array.length
|> printfn "results has %d records"
sw.Stop()
printfn "run all in %d" sw.ElapsedMilliseconds
Console.ReadLine() |> ignore
0
Kq chạy thử
Gen data
Gen data in 9096
Start
results has 631767 records
run all in 772
Như vậy thời gian chạy "hàng tỉ các phép so sánh" kia chỉ mất có hơn ~800ms
Vì string url gen chỉ có số và đuôi .com nên dù có ~11 triệu url, chương trình cũng chỉ dùng ~500-600MB ram.
Url thật thì chắc vẫn chạy hoàn toàn trên ram không vấn đề gì nhỉ
C# là high-level
C++ gần với low-level
và cuối cùng là học đến low-level
chứ không chỉ đơn thuần là hoc nhiều ngôn ngữ. bởi mình được biết ở VN thường dạy từ low-level đến high-level (C -> C++/Java -> PHP/ Ruby/C# ...), thì ở đây mình đưa ra 1 phương pháp khác.
và 1 năm là đủ để bạn tương đối thành thạo về 1 ngôn ngữ nếu đầu tư kỹ lưỡng cả về thời gian và công sức.
mình ko có ý phản đối bạn, chỉ là đưa ra ý kiến về 1 view nhìn khác thôi )
THẢO LUẬN
Nice example!
Great! Thank you very much.
That's great!
(like)
Mình đọc trên documentation của Lodash thì
_.extendlà alias của_.assignIn;_.assignvà_.assignInchỉ khác nhau một chút ở việc lựa chọn property của source object._.assignIngiống như việc dùngfor...invới object vậy(y)
bài viết hay, cảm ơn bạn nha
Thú vị
The refactor at PMS
Anh dang test viblo :3
Senior SonNT co khac
cảm ơn tác giả!
cảm ơn tác giả
Yii giờ lên Yii 2, hiệu năng rất tốt, code nhanh hơn.
Hay quá a ei
)
Chào bạn, mình có để source code và hướng dẫn tại đây https://github.com/ngodacdu/SSSheetLayout Cám ơn bạn đã góp ý.
Good job man!
À, hàng tỉ phép so sánh thì nó không nhiều lắm đâu bạn. Nó còn nhiều thao tác ở trong đấy nữa. VD: Load hết dữ liệu từ db vào RAM, INSERT dữ liệu từ RAM vào DB, parse, regex, ...
Nếu chỉ có như demo của bạn thì đúng là chưa đến 1 giây. Của mình là ~400ms.
Ở đây mình đang cố gắng hướng đến cách chọn giải pháp.
Anyway, cảm ơn cái code
F#bá đạo nhé. Lần đầu được thấy codeF#.@kopitop Thanks bạn ! Mình đồng ý với cách nhìn của bạn. Có thể cách nhìn này là một high level của bài viết này chăng ?
Dù sao thì học bất kì ngôn ngữ nào, level nào đều phụ thuộc vào nhiều yếu tố: mục đích, công việc, sở thích, bị ép buộc ... kể cả khả năng của mỗi người. Vì thế sẽ là không có quy chuẩn cho việc học lập trình, bản thân mỗi người phải tự lựa chọn cách phù hợp nhất thôi.
Nếu dữ liệu nhỏ thì tại sao không load hết vào ram rồi viết vào DB sau nhỉ. Mình viết thử một chương trình để test, chạy debug thử bằng f#
Kq chạy thử
Như vậy thời gian chạy "hàng tỉ các phép so sánh" kia chỉ mất có hơn ~800ms Vì string url gen chỉ có số và đuôi .com nên dù có ~11 triệu url, chương trình cũng chỉ dùng ~500-600MB ram. Url thật thì chắc vẫn chạy hoàn toàn trên ram không vấn đề gì nhỉ
top-down theo ví dụ của mình có nghĩa là:
C# là high-level C++ gần với low-level và cuối cùng là học đến low-level
chứ không chỉ đơn thuần là hoc nhiều ngôn ngữ. bởi mình được biết ở VN thường dạy từ low-level đến high-level (C -> C++/Java -> PHP/ Ruby/C# ...), thì ở đây mình đưa ra 1 phương pháp khác. và 1 năm là đủ để bạn tương đối thành thạo về 1 ngôn ngữ nếu đầu tư kỹ lưỡng cả về thời gian và công sức. mình ko có ý phản đối bạn, chỉ là đưa ra ý kiến về 1 view nhìn khác thôi
)