我有一个简单的场景,我试图在一个库存对象列表上测试表达式编译树的性能.下面是代码
表达式编译树的性能比静态lambda调用慢5倍.我不确定这是否是表达式编译树可以预期的标准性能.非常感谢任何见解.
LambdaExpression();
List<Stock> stocks = new List<Stock>();
for (int ctr = 0; ctr <= 5000000; ctr++)
{
Stock stk1 = new Stock() { Price = ctr, Symbol = "A", CloseDate = DateTime.Now, FaceValue = ctr } ;
stocks.Add(stk1);
}
CompileTimeLamda(a);
DynamicLambda(a);
public static void LambdaExpression()
{
ParameterExpression CS1 = Expression.Parameter(typeof(Stock), "d");
var line1 = Expression.Equal(Expression.Property(CS1, typeof(Stock).GetProperty("Symbol")), Expression.Constant("MSFT", typeof(string)));
var line2 = Expression.GreaterThan(Expression.Property(Expression.Property(CS1, typeof(Stock).GetProperty("CloseDate")),typeof(DateTime).GetProperty("Millisecond")),
Expression.Constant(0, typeof(int)));
var line3 = Expression.GreaterThan(Expression.Property(CS1, typeof(Stock).GetProperty("Price")), Expression.Constant((double)0, typeof(double)));
var line4 = Expression.And(line1,line2);
var line5 = …Run Code Online (Sandbox Code Playgroud) 我正在使用Quartz框架,与时间生成有点混淆.这是一个简单的代码,每天上午11:30生成触发器.为了测试这一点,我使用ComputeFireTimes查询生成接下来的100个连续发射时间,但是我得到的时间很奇怪.可能是我在这里缺少一些东西.
Trigger trig = TriggerUtils.MakeDailyTrigger(11, 30);
var triggerList = TriggerUtils.ComputeFireTimes(trig, null, 100);
foreach (DateTime trigger in triggerList)
{
Console.WriteLine(trigger.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
8/12/2011 3:30:00 PM 8/13/2011 3:30:00 PM 8/14/2011 3:30:00 PM 8/15/2011 3:30:00 PM 8/16/2011 3 :30:00 PM 8/17/2011 3:30:00 PM 8/18/2011 3:30:00 PM 8/19/2011 3:30:00 PM
时间应该是上午11:30,但是显示在下午3:30.
Microsoft Roslyn - 编译器即服务是 .NET 堆栈的一个很好的补充;我在 Java 世界中寻找类似的东西。我相信 Scala 在编译器插件的形式上有类似的东西,但不确定它有多灵活。
我试图在 Java 世界中解决的问题是允许用户编写一些自定义语法,并在内部将其重新连接为不同的语法。
试图将我的几个C#项目转换为Scala,并且仍在试图弄清楚如何进行某些转换.我遇到了这段代码,如果有人可以帮我写下Scala中的代码,我会很感激,我对Select语句中的匿名代码块特别感兴趣.
static void Main(string[] args)
{
Stock stk = new Stock();
Select(stk, a => new { a.Prices, a.Symbol });
}
public static U Select<T, U>(T data,Func<T,U> item)
{
return item(data);
}
Run Code Online (Sandbox Code Playgroud) 我是Scala编程世界的新手,但喜欢它.最近我开始将我的研究应用程序移植到Scala中,而我仍在努力的一件事就是返回关键字.例如,在下面的代码中
def readDocument(dbobj:MongoDBObject) = Option[ContainerMetaData]
{
for(a <- dbobj.getAs[String]("classname");
b <- dbobj.getAs[Long]("id");
c <- dbobj.getAs[Long]("version");
d <- dbobj.getAs[String]("description");
e <- dbobj.getAs[String]("name");
f <- dbobj.getAs[String]("tag");
g <- dbobj.getAs[Int]("containertype");
h <- dbobj.getAs[Date]("createddate")
)
{
val ctype = ContainerType(g)
val jodadt = new DateTime(h)
val data = new ContainerMetaData(a,b,c,d,e,f,ctype,jodadt)
Some(data)
}
None
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中我收到错误消息:
type mismatch; found : None.type required: om.domain.ContainerMetaData
Run Code Online (Sandbox Code Playgroud)
因此,如果我删除显式返回类型代码工作,但没有显式返回关键字我无法终止我的代码Some(data).
def readDocument(dbobj:MongoDBObject)=
{
for(a <- dbobj.getAs[String]("classname");
b <- dbobj.getAs[Long]("id");
c <- dbobj.getAs[Long]("version");
d <- dbobj.getAs[String]("description");
e <- dbobj.getAs[String]("name");
f …Run Code Online (Sandbox Code Playgroud) 我在eclipse中转换了我的scala项目以使用Maven(只需右键单击项目和配置Maven构建),这创建了pom.xml,添加了右依赖项,从maven存储库中提取了所需的jar,但每当我尝试编译时我都不会查看在target\classes文件夹中生成的类文件.但是,我在target\classes文件夹下的相应目录中看到了scala文件的实际源代码.我不确定为什么它会复制target\classes文件夹中的源文件.
另一个奇怪的事情是,如果我在eclipse中打开单个scala文件并进行一些代码更改,那么它会自动构建该类文件,但是我有1000多个scala文件,因此不是一个可行的选项.
我尝试了所有选项,例如Eclipse - Clean&Build,但没有任何作用,我甚至尝试在eclipse中使用maven构建,但它总是会出现这样的消息"没什么可编译的 - 所有类都是最新的",我清理了我的目标目录,但仍然是一个问题.
在这方面,我将不胜感激.
提前致谢
我正在使用Scala Eclipse IDE -Scala IDE构建的Eclipse SDK Build id:3.0.4-2.11-20140520-1158-Typesafe
Content of Pom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>notmaven</groupId>
<artifactId>notmaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<build>
<sourceDirectory>C:\projectsomu\notmaven\src</sourceDirectory>
<scriptSourceDirectory>C:\projectsomu\notmaven\src\main\scripts</scriptSourceDirectory>
<testSourceDirectory>C:\projectsomu\notmaven\src\test\java</testSourceDirectory>
<outputDirectory>C:\projectsomu\notmaven\target\classes</outputDirectory>
<testOutputDirectory>C:\projectsomu\notmaven\target\test-classes</testOutputDirectory>
<resources>
<resource>
<directory>C:\projectsomu\notmaven\src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>C:\projectsomu\notmaven\src\test\resources</directory>
</testResource>
</testResources>
<directory>C:\projectsomu\notmaven\target</directory>
<finalName>notmaven-0.0.1-SNAPSHOT</finalName>
<pluginManagement>
<plugins>
<plugin> …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚是否可以基于所有文档的嵌套字段进行排序,例如.在JSON下面,字段是一个嵌套对象,我要找的是从所有文档中检索所有fields.name,然后按名称字段排序.我知道如果它是单个文档的一部分,我可以使用内部命中查询来做到这一点.
另一种选择是检索所有文档,然后在前端/中间层进行排序,这不是一个好的选择.
[ {
"id": "42ddf6e1-23f5-4aed-9d3a-1ba3ac3677b1",
"fields": [
{
"name": "asofheading"
},
{
"name": "SEC_TYPE"
}
],
},
{
"id": "7579928e-2196-4f7d-aaf8-4bfe9e67b330",
"fields": [
{
"name": "asofheading"
},
{
"name": "SEC_TYPE"
},
{
"name": "CUSIP"
}
]
},
{
"id": "3a0940c1-7495-400c-a204-cd9bc6966fae",
"fields": [
{
"name": "AsofHeading"
},
{
"name": "SECT_PROFILE"
},
{
"name": "SECT_PROFILESP"
}
},
]
Run Code Online (Sandbox Code Playgroud)
我想从所有文档中仅提取字段名称,然后按字段名称排序