[
https://issues.apache.org/jira/browse/IGNITE-1779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14976285#comment-14976285
]
Pavel Tupitsyn edited comment on IGNITE-1779 at 10/27/15 12:47 PM:
--------------------------------------------------------------------
{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 10000).Select(x => new
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType<object>().ToArray();
Console.WriteLine("As serializable: " +
_marsh.Marshal(serArr).Length / serArr.Length); // 18
Console.WriteLine("As object array: " +
_marsh.Marshal(objArr).Length / serArr.Length); // 232
}
[Test]
public void TestArrayWithRawPortables()
{
var marsh =
new PortableMarshaller(new PortableConfiguration
{
TypeConfigurations =
new List<PortableTypeConfiguration> { new
PortableTypeConfiguration(typeof(PrimitiveFieldRawPortableType)) }
});
PrimitiveFieldRawPortableType[] serArr = Enumerable.Range(1,
1000).Select(x => new PrimitiveFieldRawPortableType { PDouble = x }).ToArray();
object[] objArr = serArr.OfType<object>().ToArray();
Console.WriteLine("As serializable: " +
marsh.Marshal(serArr).Length / serArr.Length); // 128
Console.WriteLine("As object array: " +
marsh.Marshal(objArr).Length / objArr.Length); // 383
}
{code}
was (Author: ptupitsyn):
{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 10000).Select(x => new
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType<object>().ToArray();
Console.WriteLine("As serializable: " +
_marsh.Marshal(serArr).Length / serArr.Length); // 18
Console.WriteLine("As object array: " +
_marsh.Marshal(objArr).Length / serArr.Length); // 232
}
[Test]
public void TestArrayWithRawPortables()
{
var marsh =
new PortableMarshaller(new PortableConfiguration
{
TypeConfigurations =
new List<PortableTypeConfiguration> { new
PortableTypeConfiguration(typeof(PrimitiveFieldRawPortableType)) }
});
PrimitiveFieldRawPortableType[] serArr = Enumerable.Range(1,
1000).Select(x => new PrimitiveFieldRawPortableType { PDouble = x }).ToArray();
object[] objArr = serArr.OfType<object>().ToArray();
Console.WriteLine("As serializable: " +
marsh.Marshal(serArr).Length / serArr.Length);
Console.WriteLine("As object array: " +
marsh.Marshal(objArr).Length / objArr.Length);
}
{code}
> .Net: Evaluate BinaryFormatter overhead for generic collections.
> ----------------------------------------------------------------
>
> Key: IGNITE-1779
> URL: https://issues.apache.org/jira/browse/IGNITE-1779
> Project: Ignite
> Issue Type: Task
> Components: interop
> Affects Versions: ignite-1.4
> Reporter: Vladimir Ozerov
> Assignee: Pavel Tupitsyn
> Priority: Critical
> Fix For: 1.5
>
>
> It seems that BinaryFormatter is extreeeemly inefficient. I tried to write a
> single Guid with and it resulted in >100 bytes comparing to 16 bytes when
> written in portable form.
> If we notice the same overhead for collections/arrays which are fairly often
> used types, we will have to revert to our initial approach when collections
> were serialized using our own mechanics.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)