V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  a33291  ›  全部回复第 24 页 / 共 28 页
回复总数  544
1 ... 16  17  18  19  20  21  22  23  24  25 ... 28  
2022-09-04 11:27:39 +08:00
回复了 bthulu 创建的主题 .NET .net core 的时间日期类为啥这么慢, 跟 Java 至少几十倍的差距
@beyondex 你好,是 @Maboroshii 这位朋友先说测试代码存在 cpu 占用差异,所以我这里才比较的 cpu.

个人看法哈,对于外部因素都基本一样(代码逻辑一致 硬件环境一致)的场景下,可以横向比较一下.
再次感谢各位的回复

对于洗牙(拔智齿反正不行,重医附属医院),好像都是不能走医保报销的(我意思走个人账户也不算是报销,和直接掏钱基本没区别),另外就是有朋友提到有一个报销基数的问题,这个好像是各地政策不一样,北京是 1700 还是多少,一般门诊类的都会低于这个基数,所以很多都报不了.

总结下差异点
1. 设备差异,相对来说医院的设备可能会更为专业
2. 卫生条件,医院卫生条件会更好一些
3. 外围措施更完善,医院一般会进行验血(但是也看有朋友提到不验血的),我问了两江新区人民医院这边是要验血的
4. 价格,医院一般都会比牙科诊所贵,同时可能会有消费陷阱
5. 信誉背书,医院信誉一般来说好过牙科诊所

综合看,医院的价格有其一定的道理和合理性.
实际操作上,老实说,占一部分运气成分,如果经济允许,还是选择公立医院更为可靠.
2022-09-04 09:51:14 +08:00
回复了 bthulu 创建的主题 .NET .net core 的时间日期类为啥这么慢, 跟 Java 至少几十倍的差距
@Maboroshii
是的,请分别在 release 模式下编译后,单独运行进行比较
C# netcore 6.0.400
```
dotnet build -c Release
./main.exe
```
cpu 占用 最高 2.95% 最低 1.53% 平均 2.2%
内存 15.71MB

go 1.19
```
go build -ldflags "-s -w" main.go
./main.exe
```
cpu 占用 最高 3.39% 最低 1.54% 平均 2.5%
内存 15.75MB

以上数据均运行多次,取最优

就仅针对测试代码来说,这些数据表明 c#和 go 性能基本一致.但是要注意,
1. 这里边其实包含了编译器本身的 buff 加持,即编译器本身的优化也会影响结果,因为测试代码相对简单,极有可能会被编译器优化掉(暂未对比汇编).
2. go 中 routine 无处不在,通过查看 2 个程序的线程 cycles delta 等参数可知,go 在运行时多个线程均较高,C#版本仅主线程较高.也就是可能他们的调度机制不一样.

另外说明,我对 go 不了解,对 go 的信息了解不一定正确(如有误请指正).

结论
单就以上测试代码来说,我觉得他们是性能持平的(实际场景业务复杂,不好拉平衡量,暂不讨论).

附 C#的 csproj 文件
```
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<OutputPath>.</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
</Project>
```
2022-09-03 16:19:27 +08:00
回复了 bthulu 创建的主题 .NET .net core 的时间日期类为啥这么慢, 跟 Java 至少几十倍的差距
@Maboroshii 可以发一下测试代码,对于基础的使用,请参阅微软的官网文档,很详细了.

不管什么语言,大部分时候如果性能不符合预期,都先从自己身上找问题.写语言和编译器的人水平在绝大部分人之上
感谢各位回复

医院的确会做凝血检查,他们学名叫 龈上洁治,也就是只清洁牙龈以上部分,外边的牙科诊所一般也是只做这个,不过都多少会出血.

那我感觉就外边牙科诊所就好了,省 200 吃鸭脖 :)
2022-09-03 14:08:45 +08:00
回复了 bthulu 创建的主题 .NET .net core 的时间日期类为啥这么慢, 跟 Java 至少几十倍的差距
系统 win11 22h2 22622.590
cpu i5-9600K
内存 32G

以下代码均不开优化,否则可能会被优化掉

场景 1 格式化为字符串
C# netcore 6.0.400
```
using System;
using System.Diagnostics;

var sw = Stopwatch.StartNew();
for (var i = 0; i < 1_000_000; i++)
{
var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//var now = DateTime.Now;
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
```
Java 1.8.0.333
```
package com.company;

import java.util.Date;
import java.text.SimpleDateFormat;

class Playground {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long stime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
Date now = new Date();
String nowString = format.format(now);
}
long etime = System.currentTimeMillis();
System.out.printf("%d ", (etime - stime));
}
}
```
以上代码分别执行 5 次
C# 243 232 237 233 236
Java 617 629 619 632 616

场景 1 只读取当前时间,不做格式化
C# netcore 6.0.400
```
using System;
using System.Diagnostics;

var sw = Stopwatch.StartNew();
for (var i = 0; i < 1_000_000; i++)
{
//var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var now = DateTime.Now;
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
```
Java 1.8.0.333
```
package com.company;

import java.util.Date;
import java.text.SimpleDateFormat;

class Playground {
public static void main(String[] args) {
//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long stime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
Date now = new Date();
//String nowString = format.format(now);
}
long etime = System.currentTimeMillis();
System.out.printf("%d ", (etime - stime));
}
}
```
以上代码分别执行 5 次
C# 39 38 39 39 39
Java 9 10 10 9 9

结论
1. 均执行时间字符串格式化时,C#比 Java 快
2. 仅执行获取当前时间的代码时,java 更快

关于结论 2 的分析

通过查看源代码,java 的 new Date() 仅执行一个成员赋值
```
public Date() {
this(System.currentTimeMillis());
}
public Date(long date) {
fastTime = date;
}
private transient long fastTime;
```
而 C#的 Date.Now 源码
```
public static DateTime Now
{
get
{
DateTime utc = UtcNow;
long offset = TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(utc, out bool isAmbiguousLocalDst).Ticks;
long tick = utc.Ticks + offset;
if ((ulong)tick <= MaxTicks)
{
if (!isAmbiguousLocalDst)
{
return new DateTime((ulong)tick | KindLocal);
}
return new DateTime((ulong)tick | KindLocalAmbiguousDst);
}
return new DateTime(tick < 0 ? KindLocal : MaxTicks | KindLocal);
}
}
public static unsafe DateTime UtcNow
{
get
{
ulong fileTimeTmp; // mark only the temp local as address-taken
s_pfnGetSystemTimeAsFileTime(&fileTimeTmp);
ulong fileTime = fileTimeTmp;

if (s_systemSupportsLeapSeconds)
{
// Query the leap second cache first, which avoids expensive calls to GetFileTimeAsSystemTime.

LeapSecondCache cacheValue = s_leapSecondCache;
ulong ticksSinceStartOfCacheValidityWindow = fileTime - cacheValue.OSFileTimeTicksAtStartOfValidityWindow;
if (ticksSinceStartOfCacheValidityWindow < LeapSecondCache.ValidityPeriodInTicks)
{
return new DateTime(dateData: cacheValue.DotnetDateDataAtStartOfValidityWindow + ticksSinceStartOfCacheValidityWindow);
}

return UpdateLeapSecondCacheAndReturnUtcNow(); // couldn't use the cache, go down the slow path
}
else
{
return new DateTime(dateData: fileTime + (FileTimeOffset | KindUtc));
}
}
}
```

可以看出 java 的实现在仅 new Date()的情况下,执行的操作比 C#少很多,诸如 getTime 等都是调用时才计算,而 C#这边则是已经需要计算很多成员所以更慢.
2022-09-03 10:27:12 +08:00
回复了 kyro00000 创建的主题 问与答 幼儿园任务繁重,求助解决方案
照片和视频是用手机拍的吗
2022-09-02 10:29:10 +08:00
回复了 0o0O0o0O0o 创建的主题  WATCH 大家的九月挑战徽章具体内容是什么
每天 5000 步,30 分钟活动时间,减轻脂肪肝
2022-09-02 09:09:28 +08:00
回复了 xuxuzhaozhao 创建的主题 GitHub Github 要把 Trending 关了?
现在刷榜的多(特指国内),一些前排的项目并不是什么技术项目,各种目的都有(比如什么资料收集 面试之类)

另外这个榜估计也被很多爬虫关照
2022-08-31 09:05:15 +08:00
回复了 Ashore 创建的主题 问与答 想再学一门编程语言,不知道学啥。。
欢迎加入 java 大家庭
2022-08-31 09:00:31 +08:00
回复了 a33291 创建的主题 问与答 请问是否有软件能自动生成扫描版 PDF 的书签或目录?
谢谢各位

目前应该都只能先转 word ,然后通过 word 生成目录,再转换为 pdf 。这些步骤都要手动完成,目前 ocr 识别效果最好的应该还是 abbyy ,一些 GB 文档的文字样式比较麻烦。
2022-08-30 14:24:09 +08:00
回复了 obwj 创建的主题 问与答 Mac 数据库软件推荐
我有 win 版 keygen,但不确定是否适合 macos
2022-08-30 12:17:39 +08:00
回复了 nash 创建的主题 程序员 成为程序员后你都明白了什么?
1. 原来可以这么多毛病同时出现(手腕 脖子 眼睛 腰 肝 三高)
2. 以前笑别人提笔忘字,现在已是同道中人,所以别笑人家
3. 年纪是过不去的坎,再也无法熬夜加班了
这个很漂亮,收费,但是也能找到源码.

https://keenthemes.com/metronic/
2022-08-28 09:49:47 +08:00
回复了 a33291 创建的主题 程序员 哦豁,喜提中度脂肪肝
感谢各位建议,希望大家都能健康编码 😘

我个人的话目前超按身高预估的最佳体重有 12KG,已属于偏重,而且的确肚子大特征明显.
大概一年还是两年前体检当时是说有脂肪肝趋势,没在意,然后再去查就中度了,速度很快.

平时不抽烟不喝酒,就是每天电脑面前时间很长,每天平均 10 多个小时.而且自从换工作后,单位离家非常近(步行几分钟),所以等于没得运动.

希望各位都能引以为戒,保护自己的身体
2022-08-27 13:49:15 +08:00
回复了 laLuna 创建的主题 iPhone iPhone 8 现在的系统是 13.6,是否推荐升级到最新的 15.6.1
我目前升级到 16 的,用起来卡顿感很明显
2022-08-27 13:45:50 +08:00
回复了 a33291 创建的主题 程序员 哦豁,喜提中度脂肪肝
大部分程序员估计都不爱运动,也不喝酒,就是不爱运动加上之前吃外卖积累起来的应该.
是要注意下才行,共勉
国内厂商基本操作了属于是 🤣

老老实实写程序是不可能富起来的,还得是这些灰产地带
培训班出身吗 🤣
2022-08-26 12:14:31 +08:00
回复了 fiypig 创建的主题 随想 买车真的没必要, 我真的难受
@lusi1990 哈哈,我比你多点,5 年 3w 公里.现在一停就是一个月,然后去年电瓶亏电,换一个 800 🤣
1 ... 16  17  18  19  20  21  22  23  24  25 ... 28  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3741 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 10:44 · PVG 18:44 · LAX 03:44 · JFK 06:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.