我正在评估Rx是否需要每秒处理数千条消息的交易平台项目.现有平台具有复杂的事件路由系统(多播委托),它响应这些消息并执行大量后续处理.
我已经看过Reactive Extensions的显而易见的好处,但发现它有点慢,通常慢100倍.
我已经创建了单元测试来演示这个,它运行一个简单的增量100万次,使用各种Rx风格和直接开箱即用的委托"控制"测试.
结果如下:
Delegate - (1000000) - 00:00:00.0410000
Observable.Range() - (1000000) - 00:00:04.8760000
Subject.Subscribe() - NewThread - (1000000) - 00:00:02.7630000
Subject.Subscribe() - CurrentThread - (1000000) - 00:00:03.0280000
Subject.Subscribe() - Immediate - (1000000) - 00:00:03.0030000
Subject.Subscribe() - ThreadPool - (1000000) - 00:00:02.9800000
Subject.Subscribe() - Dispatcher - (1000000) - 00:00:03.0360000
Run Code Online (Sandbox Code Playgroud)
如您所见,所有Rx方法都比委托等效方法慢约100倍.很显然,Rx在一个更复杂的例子中会有很多用处,但这看起来非常慢.
这是正常的还是我的测试假设无效?下面的Nunit代码 -
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using NUnit.Framework;
using System.Concurrency;
namespace RxTests
{
[TestFixture]
class ReactiveExtensionsBenchmark_Tests
{
private int counter = 0;
[Test] …Run Code Online (Sandbox Code Playgroud) 我试图在这个图像中居中对齐文本,理想情况下使用尽可能少的CSS/HTML.如您所见,左侧的图标将其推离中心:
以下是此顶部的相关HTML和CSS:
<div class="navbarheader">
<div class="header-left">
<button type="button" class="pull-left btn-nav-menu">
<i class="navbar-text fa fa-fw fa-navicon"></i>
</button>
<button type="button" class="pull-left" ng-click="ui.showSearch()">
<i class="navbar-text fa fa-fw fa-search"></i>
</button>
</div>
<div class="header-title">
<div class="navbar-brand">{{ui.headerTitle}}</div>
</div>
<div class="header-right">
<button class="btn-watchlist pull-right" ng-click="ui.toggleWatchlists()">
<i class="navbar-text fa fa-fw fa-binoculars"></i>
</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.navbarheader {
display: flex;
flex-direction: row;
justify-content: space-around;
}
.navbarheader .header-left {
margin-left: -0.5rem;
}
.navbarheader .header-title {
flex-grow: 2;
text-align: center;
}
.navbarheader .header-right {
margin-right: -0.5rem;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何保持文本中心对齐,但如果有必要允许它占据所有空白?
值得一提的是Bootstrap 4.0 alpha代码库.
我有一个S3 Fine Uploader实现工作得很好.默认情况下,它上传文件很好,但它们是私有的.基于FineUploader的文档,我将如下的objectProperties选项添加到我的客户端js config中,以便FineUploader将文件公开:
objectProperties: {
acl: "public-read"
},
Run Code Online (Sandbox Code Playgroud)
但是我现在在上传期间从s3获得访问被拒绝的响应:
<Error><Code>AccessDenied</Code><Message>Access Denied</Message>
<RequestId>(removed)</RequestId>
<HostId>(removed)</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
如果有帮助,这是我的CORS Bucket Policy:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>content-type</AllowedHeader>
<AllowedHeader>origin</AllowedHeader>
<AllowedHeader>x-amz-acl</AllowedHeader>
<AllowedHeader>x-amz-meta-qqfilename</AllowedHeader>
<AllowedHeader>x-amz-date</AllowedHeader>
<AllowedHeader>authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
这是请求的原始HTTP转储:
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Content-Length:39643
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryR70e49pqaNEGSsT1
Host:quickfunnel.s3.amazonaws.com
Origin:http://mysite.local
Referer:http://mysite.local/dashboard/
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Request Payload
------WebKitFormBoundaryR70e49pqaNEGSsT1
Content-Disposition: form-data; name="key"
d50e0c4f-1886-48bb-b077-075fca79b6dc.JPG
------WebKitFormBoundaryR70e49pqaNEGSsT1
Content-Disposition: form-data; name="AWSAccessKeyId"
ACCESS-KEY-REMOVED
------WebKitFormBoundaryR70e49pqaNEGSsT1
Content-Disposition: form-data; name="Content-Type"
image/jpeg
------WebKitFormBoundaryR70e49pqaNEGSsT1
Content-Disposition: …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法弄清楚有多少观察者订阅了IObservable对象.
我有一个管理HashTable的过滤IObservable实例的类,我想实现一个"健康检查"例程,可以确定订阅者是否已被删除/处置,而每个订阅者都不必明确通知此类他们'完成(即应通过Dispose()或Unsubscribe()隐式).
这并没有真正回答这个问题 -
应该-I-使用-listiobserver或 - 简Actiont就是对保跟踪的-AN-的IObservable
任何想法Rx专家?
我通过Observable监控股票报价流,我认为它符合某种条件,例如 -
Observable
.Empty<Quote>
.Where(q => q.Price > watchPrice)
.Subscribe(q => { // do stuff } );
Run Code Online (Sandbox Code Playgroud)
现在,在"做东西"的时候,我理想的是得到最后3个"q"来自where子句,所以有点像BufferWithCount(),但每个条目都包含Subscribe()包含最后3个条目.这样我就可以保存导致条件评估的报价更改的快照.
伪大理石图 -
in - a b c d e f
out - a ba cba dcb edc fde
Run Code Online (Sandbox Code Playgroud)
任何想法都赞赏
我试图返回方括号之间的所有单词的计数.所以......
[don't match these words] but do match these
Run Code Online (Sandbox Code Playgroud)
我在最后四个单词中得到4分.
这适用于.net:
\b(?<!\[)[\w']+(?!\])\b
Run Code Online (Sandbox Code Playgroud)
但它不适用于Javascript,因为它不支持lookbehind
纯js正则表达式解决方案的任何想法?