我想传递一条消息
{up, Distance}
{down, Distance}
Run Code Online (Sandbox Code Playgroud)
我也可以这样做
{1, Distance}
{-1, Distance}
Run Code Online (Sandbox Code Playgroud)
关键的区别是一个是原子,另一个是整数.在这里阅读手册页:
http://www.erlang.org/doc/efficiency_guide/advanced.html
整数和原子在内存中占用1个字.但他们提到了原子表并需要引用它.
我的问题是,原子表是否在每次使用原子时被引用?我的哪个例子效率最高?
可能是什么原因使用 -
bool result = String.Compare(fieldStr, "PIN", true).Equals(0);
Run Code Online (Sandbox Code Playgroud)
代替,
bool result = String.Equals(fieldStr, "PIN", StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
或者,甚至更简单 -
bool result = fieldStr.Equals("PIN", StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
用于比较.NET中的两个字符串和C#?
我被分配到一个具有大型代码库的项目中,该代码库放弃使用第一个用于简单相等比较的代码库.我不能(还没有)找到任何理由为什么那些高级家伙使用这种方法,而不是像第二或第三种更简单的东西.Equals(静态或实例)方法是否存在任何性能问题?或者使用String.Compare方法是否有任何特定的好处,甚至超过了额外操作的处理.Equals(0)?
这里提出了类似的问题,但他们没有解决为什么sort和awk之间存在速度差异。
我首先在Unix Stackexchange上提出了这个问题,但既然他们告诉我这对于 Stackoverflow 来说是一个很好的问题,我会将其发布在这里。
我需要对一个大的单词列表进行重复删除。我尝试了几个命令,并在这里和这里做了一些研究,他们解释说,删除重复单词列表的最快方法似乎是使用 awk,因为 awk 不会对列表进行排序。它使用哈希查找来跟踪项目并删除重复项。由于 AWK 使用哈希查找,他们认为大 O 是这样的
awk --> O(n) ?
排序 --> O(n log n) ?
然而我发现这不是真的。这是我的测试结果。我使用这个 python 脚本生成了两个随机单词列表。
列表 1 = 7 Mb
列表 2 = 690 Mb
测试命令
sort -u input.txt -o output.txt
awk '!x[$0]++' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
结果 AWK:
List1
real 0m1.643s
user 0m1.565s
sys 0m0.062s
List2
真实2m6.918s
用户2m4.499s
系统0m1.345s
结果排序:
List1
real 0m0.724s
user 0m0.666s
sys …
我正在编写一个从输入流中读取的程序,即
erl -run p main -noshell -s erlang halt < input
Run Code Online (Sandbox Code Playgroud)
问题是使用这个读取函数需要花费大量时间来读取它(输入流很大):
read_input(L) ->
case io:get_line("") of
eof ->
lists:reverse(L);
E0 ->
read_input([E0|L])
end.
Run Code Online (Sandbox Code Playgroud)
我一直在寻找更有效的替代方案,但我一无所获.我试过用它来读取文件
{ok, Binary} = file:read_file("input")
Run Code Online (Sandbox Code Playgroud)
这远远高效得多.问题是我必须在名称未知的平台上运行此程序,所以我需要一些替代方法来执行此操作.另外,我无法选择运行时使用的标志,例如,标志-noinput无法添加到命令行.
无论您给予什么帮助,都会受到欢迎.
假设我有两个大小为 M1 和 M2 的 RDD,它们平均分布在 p 个分区中。
我很想知道(理论上/大约)操作过滤器、映射、leftOuterJoin、++、reduceByKey 等的成本是多少。
谢谢您的帮助。
performance processing-efficiency memory-efficient apache-spark rdd
我正在尝试为我的简单视频播放器实现Youtube的缩略图预览功能.这是Snap for it:
好消息是:一旦播放器从HTTP服务器获取所有缩略图预览,它就能顺利运行.
不好的是:获取所有缩略图预览需要花费大量时间(20-30秒).(对于14分钟(~110 MB)的视频(.mp4文件),大约有550个缩略图预览(160x120)
我正在做的是:当用户开始播放视频时,我将向服务器发出"total_thumbnails"HTTP请求以获取所有这些视频.
还 - 注意:
- 我将在异步任务中执行多个HTTP请求.
- 我不会这样做,提出请求,等到下载完成然后再提出请求.
- 我将盲目地发出"total_thumbnails"HTTP请求,因此所有请求都在流水线中排队,然后并行接收响应.
额外细节:HTTP(lighttpd)服务器将运行,用户从列表中选择要播放的video.mp4后,我的播放器将从该处获取所有缩略图.此外,播放器将使用相同的服务器来使用HTTP流式传输来获取video.mp4.
问题是:当我开始播放视频,然后我快速搜索时,我最终看到了这个(白色缩略图是默认的,当映射到该时间的缩略图尚未从服务器获取时):
问题是:我如何有效地获取所有(或一些)缩略图预览,以便用户(大多数时间)将获得正确及时映射缩略图的体验?
我已经在视频开始时看到youtube的视频(这很快),播放器能够显示所有及时的正确缩略图(无论你将拇指拖到最后一分钟还是悬停在酒吧的最后几分钟,几乎每次都你会看到正确映射的缩略图).
他们是同时下载所有缩略图还是下载压缩的缩略图预览系列或其他一些智能的东西正在那里发生?
有没有人对此有所了解?
performance http thumbnails processing-efficiency video-thumbnails
我在网上查了一下,我似乎找到的所有答案都与"Node如何从多核CPU运行中受益?"的问题有关.
但.如果您的计算机只有一个核心,则您只能在任何给定时间运行一个进程.(我在这里考虑任务安排).节点使用单线程模型.
我的问题:在任何情况下,在一个核心中运行多个节点进程是否有意义?如果进程是一个侦听端口的Web服务器,那么只有一个进程可以监听,这怎么能工作呢?
ES6 支持数组解构,它可用于以如下简洁的语法交换变量,但这是否有效并建议在性能敏感的代码中作为数组处理?因为似乎需要一个新的临时数组来完成这个操作。
[a, b] = [b, a]
Run Code Online (Sandbox Code Playgroud) 有人对此提出了类似的问题,但并未按照相同的条款提出问题.
我试图安全地解码base64二进制文件,在一个上下文中,输入可能不是二进制,甚至是base64编码.
Erlang说让它崩溃并处理它 - 如果我这样做,最有效的方法是什么.效率在这个系统中非常重要.
我知道要避免try/catch,因为它构建了一个完整的堆栈跟踪 - 但是,这个上下文的catch关键字是否合理?catch关键字更快/更有效吗?
在诸如的功能中
safe_decode(Binary) ->
case catch base64:decode(Binary) of
<<Result/binary>> -> {ok, Result};
{'EXIT', _} -> {not_base64, Binary}
end.
Run Code Online (Sandbox Code Playgroud)
这真的比尝试捕获更有效吗?如何在效率很重要的系统中最好地处理这种情况,即需要尽可能有效地处理涉及构建堆栈跟踪和/或需要比快乐路径更多处理的崩溃.
我只是在学习二郎,所以也许答案就是盯着我.
erlang performance runtime-error exception processing-efficiency
我想做的事
我有许多唯一的 ID,例如id1, id2, etc.。它们出现在多个组中,每个组都是 1 到 100 个 id 之间的随机样本,例如
[1] "id872- id103- id746-"
[2] "id830- id582-"
[3] "id663- id403- id675- id584- id866- id399- id28- id550-"
Run Code Online (Sandbox Code Playgroud)
我想找到一个id所属的所有组,例如id1
groups.with.id[1] = grep("id1-", groups)
Run Code Online (Sandbox Code Playgroud)
我的问题
数据量很大(80k id,1M 个组),在我的笔记本电脑上大约需要12 个小时。我认为这是我正在执行 80k 次(每个 id 一次)以及每次访问一个巨大对象(1M 组)的事实的组合。
有什么办法可以提高效率吗?
(我经常遇到 REg 中较大对象的问题,重复索引具有 >10k 行的数据帧会变得非常慢。也赞赏大型对象的有效索引的一般答案!)
示例代码
# make toy dataset
n.ids = 80000 # number of unique ids
n.groups = 100 # number of groupings
# make data
ids = …Run Code Online (Sandbox Code Playgroud) performance ×5
erlang ×3
.net ×1
apache-spark ×1
awk ×1
bash ×1
c# ×1
ecmascript-6 ×1
exception ×1
http ×1
inputstream ×1
integer ×1
io ×1
large-data ×1
node.js ×1
r ×1
rdd ×1
sorting ×1
string ×1
thumbnails ×1
unix ×1
webserver ×1